1

我正在尝试解决一个名为mirrorEnds的编码问题。我的解决方案失败了,但我没有从网站得到任何有用的反馈,只有失败的测试运行:

失败的测试运行图像

还有我的代码(我改变stringstr因为我习惯了“str”的问题):

 public String mirrorEnds(String string) {

 String str = string;
 StringBuilder sb = new StringBuilder();
 int beg = 0;
 int end = str.length()-1;

 while(beg < end)
 {
   if(str.charAt(beg)==str.charAt(end))
    sb.append(str.substring(beg,beg+1));
   else
    break;

   ++beg;
   --end;      
 }

 if(beg==end)
  return str;
 else
  return sb.toString();

}
4

8 回答 8

1

这是我的,因为它的价值(不多,我知道,但我在你发现错误的时候写它..)

private String mirrorEnds(String string) {
    final char[] chars = string.toCharArray();
    final int n = chars.length;
    StringBuilder sb = new StringBuilder();

    for (int i = 0; i < n; i++) {
        if (chars[i] != chars[n - i - 1])
            break;
        sb.append(chars[i]);
    }
    return sb.toString();
}
于 2012-06-01T22:20:40.837 回答
0

呸。我找到了。实例是“abba”

需要将“if(beg==end)”更改为“if(beg>=end)”。

于 2012-06-01T22:15:09.930 回答
0

这是我的:

public String mirrorEnds(String str) {
    String res = "";
    int count = str.length() - 1;

    for(int i = 0;i < str.length();i++)
    {
        if(str.charAt(i) == str.charAt(count))
        res += str.substring(i, i + 1);
        else
            break;
        count--;
    }

    return res;
}
于 2014-07-02T14:40:20.683 回答
0

制作辅助方法既高效又使工作更轻松,逻辑更清晰,为初学者推荐策略,剖析逻辑,然后将其放在一起,如codingBat的fizzBu​​zz问题所见,这些问题构建成真正的fizzBu​​zz。即使有更短的解决方案,这也显示了所使用的逻辑的全部范围。

public String mirrorEnds(String string) {
  String reversed = reverseString(string); //the reversed version 
  String result = ""; 
  for(int a = 0; a < string.length(); a++){
  if(string.charAt(a) == reversed.charAt(a)){ //keep going...
  result += string.charAt(a);
  }
  else if(string.charAt(a) != reversed.charAt(a)){
  break; //error, stop
  }  
  }
  return result;
}
public String reverseString(String s){
  String reversed = "";
  for(int a = s.length() - 1; a >= 0; a--){
  reversed += s.charAt(a);
  }
  return reversed;
} 
于 2015-04-07T03:05:32.957 回答
0
public String mirrorEnds(String string) {
    String s = "";
    String str = "";

    for (int i=string.length()-1; i>=0; i--)
    {
        s = s + string.charAt(i);
    }

    for (int j=0; j<string.length(); j++)
    {
        if (s.charAt(j) == string.charAt(j))
        {
            str = str + string.charAt(j);
        }

        if (s.charAt(j) != string.charAt(j))
        {
            break;
        }
    }

    return str;

}
于 2014-05-21T06:05:35.290 回答
0
public static String mirrorEnds(String string) {
    for (int i = 0; i < string.length(); i++) {
        if(string.charAt(i) != string.charAt(string.length()-i-1)){
            return string.substring(0,i);
        }
        else if(i==string.length()-1) return string;
    }       
    return "";    
}
于 2015-04-02T11:13:03.127 回答
0

这是我的解决方案,希望对你有帮助

public String mirrorEnds(String string) {

  int mid = string.length() / 2;
  String s = "";


  for (int i = 0, j = string.length()-1; i <= mid; i++, j--) {

    if (i == mid) {
      return string;
    }

    if (string.charAt(i) == string.charAt(j)) {
      s += string.charAt(i) + "";
    } else {
      break;
    }

  }

  return s;
}
于 2016-06-04T04:32:34.673 回答
0

这是我的。我的做法有点不同。

public String mirrorEnds(String string) {
      //Create a string that we will eventually return.
      String ret = "";
      //Create a for loop that takes in chars from both ends.
      for (int i = 0; i < string.length(); i++)
      {
        //Create one and two characters in order to simplify it.
        char one = string.charAt(i);
        char two = string.charAt(string.length() - 1 - i);
        //If the front and back character in the iteration 
        //equal each other, then we add the character to the return string.
        if (one == two)
        {
          ret = ret + one;
        }
        //Otherwise, we end the loop because  we don't want to
        //Have a loopback problem.
        else
        {
          break;
        }
      }
      //Return the string that we are working on.
      return ret;
    }
于 2016-12-22T05:02:15.217 回答