编写一个Optimal程序来从字符串中删除数字,然后结果字符串应该被反转

时间:2017-05-05 07:50:20

标签: javascript

编写一个最佳程序来从字符串中删除数字,然后结果字符串应该反转,例如输入=“A1B2”输出=“BA”的任何语言

我想出的程序就是这个

var str = "A1B2";
var temp = "";
for(var i = str.length - 1; i >= 0; i--) {
    if(!(str[i] >= 0 && str[i] <= 9))
        temp += str[i]
}

4 个答案:

答案 0 :(得分:2)

var str = "A1B2"
str.split('').reverse().join('').replace(/[0-9]/g, '')

答案 1 :(得分:2)

如你所说,你需要用任何语言回答。

在java中,

String str="A1B2";
String answer = new StringBuilder(str.replaceAll("[0-9]","")).reverse().toString();
System.out.println(answer); 

答案 2 :(得分:0)

从输入的最后一个位置开始,检查它是否为数字,如果是,则跳过它,否则,添加它。

public static void main(String[] args) throws IOException {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String input = reader.readLine();
    String newWord = "";

    for (int i = input.length() - 1; i >= 0; i--) {
        if (input.charAt(i) < '0' || input.charAt(i) > '9') {
            newWord += input.charAt(i);
        }
    }

    System.out.println(newWord);
}



Input: 
B224SA54ABCR

Output:
RCBAASB

答案 3 :(得分:0)

您应该在字符串中按char迭代char并检测当前字符是否是字母,可以使用ASCII table。保留将通过从字符串的末尾迭代到开头,就像在显示的代码中那样。至少这是我在C中所做的,但java中存在其他更简单的方法。 如果之前尚未初始化temp,则不应使用temp += ""。我不建议你这样做任何方法或功能&#34;以最佳方式,因为它取决于语言。

这是一个可能的C解决方案:

#include <stdio.h>
#include <string.h>
#include <ctype.h>

char line[128] = "A1B2C9C841630ERV221";
char res[128] = "";
for (int i = strlen(line) -1; i >= 0; --i)
{
    if (isalpha(line[i]))
    {
        char currentChar[2];
        currentChar[1] = 0;
        currentChar[0] = line[i];
        strcat(res, currentChar);
    }
}
printf("%s\n", res);

Output : VRECCBA

只有你应该关心的是我设置为128的lineres的大小,这可能是不够的,这取决于你输入的字符串的长度。