mirrorEnds puzzle没有提供错误的线索

时间:2012-06-01 22:04:05

标签: java string

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

failed test run image

我的代码(我将string更改为str因为我习惯了“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();

}

8 个答案:

答案 0 :(得分: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();
}

答案 1 :(得分:0)

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

需要将“if(beg == end)”改为“if(beg&gt; = end)”。

答案 2 :(得分: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;

}

答案 3 :(得分: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;
}

答案 4 :(得分: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 "";    
}

答案 5 :(得分:0)

制作辅助方法既有效又简单,逻辑更清晰,建议的初学者策略,剖析逻辑,然后将它们放在一起,如在编码真实的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;
} 

答案 6 :(得分: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;
}

答案 7 :(得分: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;
    }