如何编写一个函数字符串replace(char a,char b,string s)来替换字符串s中每个字符a的出现次数b

时间:2013-02-01 13:32:52

标签: java

我尝试了以下步骤。但我不知道接下来应该怎么做。只能使用s.equals(""),s.charAt(0),s.substring(1)。其他方式是不允许的。

public string remove1 (char c, string s){
string to_ret = "";
while(true){
   if (s.equals("")) return to_ret;
   char c2 = s.charAt(0);
   if (c2 = c) return to_ret+s.substring(1)
   to_ret = to _ret;
   s = s.substring(1);
}

remove("e","hello")

接下来我该怎么办?

5 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你可以这样做:

s = s.replace('a', 'b');

答案 1 :(得分:1)

public String remove(char a, char b, String s) {
    String retString = "";
    for (int i = 0; i < s.length(); i++) {
        char stringChar = s.charAt(i);
        if (stringChar == a) {
            retString = retString + b;
        } else {
            retString = retString + stringChar;
        }
    }
    return retString;
}

答案 2 :(得分:1)

让我向您介绍一个递归:

public String replace(char a, char b, String s) {
    if (s.equals("") return "";
    char ch = s.charAt(i);
    if (stringChar == a) {
        return b+ replace(a,b,s.substring(1))
    } else {
        return ch+ replace(a,b,s.substring(1))
    }   
}

答案 3 :(得分:0)

这是一个家庭作业问题吗?

public String remove1 (char c,char b, String s){
String to_ret = "";
int len = s.length();
for(int i =0 ; i< len ; i++){
    if (s.equals("")) return to_ret;
    char c2 = s.charAt(i);
    if (c2 == c) 
        to_ret = to_ret + b;
    else
        to_ret = to_ret + c2; 

}
return to_ret;
}

答案 4 :(得分:0)

似乎有人试图用Java教你函数式编程原理。我会质疑语言的选择。即使这样,您也应该考虑递归以获得解决方案。将String作为字符列表。