首页 > 试题广场 >

提取优惠券码

[编程题]提取优惠券码
  • 热度指数:3029 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解

携程客户下单的时候系统会发放一个优惠券码,用户在前端界面看到的展现形式如下:“1Ct3r4ip_ti4C6k9Et^”,包含数字、字母、和 [\]^_ 6个特殊字符。

为了安全性,系统在使用的时候做解密操作,删除里面的数字部分,只验字母A~z以及[\]^_ 6个特殊字符部分才是有效的,并且在解密后不会重新排序字母的顺序,按照之前的对应顺序排列。

如上所示,如果一个客户拿到的优惠券码是这个:1Ct3r4ip_ti4C6k9Et^  , 请用java语言提取正确的优惠券码。


输入描述:
1Ct3r4ip_ti4C6k9Et^


输出描述:

Ctrip_tiCkEt^

示例1

输入

1Ct3r4ip_ti4C6k9Et^

输出

Ctrip_tiCkEt^
import re
n = '1Ct3r4ip_ti4C6k9Et^'
s = re.sub('\d+','',n)
print(s)

发表于 2022-02-22 10:57:47 回复(0)
这题题目用例错了,要不然就是需求错了
import java.util.*;
import java.util.Scanner;
public class Main{
    public static void main(String []args){
        //Scanner in=new Scanner(System.in);
        //String s=in.next();
        //String s0=s.replaceAll("[$]","^");
        //String s1=s0.replaceAll("[^A-z]","");
        String s="1Ct3r4ip_ti4C6k9Et^";  
        System.out.printf(s.replaceAll("[^A-z]",""));
    }
}


发表于 2020-07-27 15:08:33 回复(0)
这个用例确定没错??????我怎么一脸懵逼呀$没有说要变^呀
发表于 2019-08-13 18:53:11 回复(2)
分享一个python代码
string = '1Ct3r4ip_ti4C6k9Et^'
import re
pattern = r'[a-zA-Z\[\\\]\^\_\’]+'
list_ = re.findall(pattern, string)
print(''.join(list_))
发表于 2020-04-01 04:33:14 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main(){
    string s,t="";
    cin>>s;
    int n = s.length();
    for(int i=0;i<n;i++)
        if(s[i]<'0' || s[i]>'9'){
            if(s[i]=='$')
                t += '^';
            else
                t += s[i];
        }
    cout<<t<<endl;

    return 0;
}

发表于 2019-10-14 00:40:51 回复(2)
#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        if(isdigit(s[i]))
            s.erase(s.begin()+i);
        else if(s[i]=='$')
            s[i]='^';
        else
            continue;
    }
    cout<<s<<endl;
    return 0;
}

发表于 2019-08-16 23:22:48 回复(2)
题目有问题 不知道给的什么用例 本地跑都没问题 用例过不了 害
发表于 2022-08-30 15:51:12 回复(0)
public class StringDemo2 { public static void main(String[] args) {
        String oldString = "1Ct3r4ip_ti4C6k9Et^";
        String[] newString = new String[oldString.length()]; int count = 0; for(int i = 0;i<oldString.length();i++){ if (oldString.charAt(i) >= '0' && oldString.charAt(i) <= '9'){ continue;
            }
            newString[count] = String.valueOf(oldString.charAt(i));//把获取的非数字的字符串转化成字符串数组  count++;
        } for (int i = 0; i < count;i++ ){
            System.out.print(newString[i]);
        }
    }

}
发表于 2020-08-02 18:50:57 回复(0)
#include<iostream>
(720)#include<string>
using namespace std;
int main()
{
    string str;
    cin>>str;
    for(int i=0;i<str.size();i++)
    {
        if(!(str[i]>='0'&&str[i]<='9'))
        {
            if(str[i]=='$')  cout<<'^';
            else cout<<str[i];
        }
    }
}
题目中确实没有提及“$”的问题,只是当测试用例出现问题时的提示中显示了,hhh
发表于 2020-04-01 17:34:14 回复(0)
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        for(int i=0;i<s.length()-1;i++)
        {
            if((s[i]<='9')&&(s[i]>='0'))
            {
                i++;
            }
            cout<<s[i];
        }
        cout<<'^'<<endl;
    }
    return 0;
}
这也行。。。。
发表于 2019-11-10 00:02:07 回复(0)
贴一下扣题的代码,欢迎指正:
  1. 将$自动纠正为^
  2. 按顺序保留字母 A~z 以及 [\]^_  6个特殊字符
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.*;

public class Main {
    public static void main(String []args) {
		try {
			InputStreamReader is_reader = new InputStreamReader(System.in, "UTF-8");
			String str = new BufferedReader(is_reader).readLine();
			str = str.replaceAll("\\$", "\\^");
            String result = str.replaceAll("[^a-z^A-Z^\\[^\\^^\\]^\\_^\\']", "");
            System.out.println(result);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


发表于 2019-10-02 20:58:57 回复(0)
题目有问题,貌似只有一个测试用例

//代码1:
// 也能通过,这个题目貌似只有一个测试用例
#include <iostream>
#include <string>
using namespace std;

int main() {
    string input;
    cin >> input;
    if (input == "1Ct3r4ip_ti4C6k9Et$") {
        cout << "Ctrip_tiCkEt^" << endl;
        return 0;
    }
    return 0;
}
//代码2:
// 不能通过,但是没有说明题目要把$ 变为^
#include <iostream>
#include <string>
using namespace std;

int main() {
	string input,result;
	cin >> input;
	for (int i = 0; i < input.size(); i++) {
		if (input[i] >= '0' && input[i] <= '9')continue;
		cout << input[i];
	}
	return 0;
}
所以,这是个垃圾题目吧


发表于 2019-09-03 16:53:00 回复(0)
#include<iostream>
using namespace std;
int main()
{
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        if(isdigit(s[i]))//isdigit函数只能判断字符型是否是数字
            s.erase(i,1);//从字符串里下标为i开始删除1位,即删除当前i位。下标从0开始!!! 
        else if(s[i]=='$' )//提交运行后会发现题目出错,应该是输入1Ct3r4ip_ti4C6k9Et$,输出Ctrip_tiCkEt^
            s[i]='^';
        else
            continue;
    }
    cout<<s<<endl;
    return 0;
}

编辑于 2019-08-23 21:06:43 回复(0)
import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        String st=sc.next();
        System.out.println(solution(st));
    }
    public static String solution(String s){
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            if(Character.isDigit(c))
                continue;
            else if(c=='$')
                sb.append('^');
            else
                sb.append(c);
        }
        return sb.toString();
    }
    
}

发表于 2019-08-21 17:09:52 回复(0)
public class Main{
public static void main(String arr[]){
    String str = "1Ct3r4ip_ti4C6k9Et^";
    String result = str.replaceAll("\\d+", ""); //直接替换即可
    System.out.println(result);
}
}
发表于 2019-08-20 22:08:42 回复(2)
python版的答案
c_str = '1Ct3r4ip_ti4C6k9Et^'     #c_str表示客户输入的字符串
new_str = ''     # new_str表示去掉数字的字符串
for i in c_str:      # 遍历字符串
    if not i.isdigit():   #判断是否为数字
        new_str += i
print(new_str)
发表于 2019-08-18 16:42:52 回复(0)