编写一个最佳程序来从字符串中删除数字,然后结果字符串应该反转,例如输入=“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]
}
答案 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的line
和res
的大小,这可能是不够的,这取决于你输入的字符串的长度。