1

mirrorEndsと呼ばれるコーディングバットの問題を解決しようとしています。私のソリューションは失敗しましたが、サイトから有用なフィードバックが得られず、テストの実行に失敗しただけです:

失敗したテスト実行のイメージ

そして私のコード(「str」の問題に慣れているために変更stringしました):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

ああ。見つけた。インスタンスは「アバ」です

「if(beg == end)」を「if(beg> = end)」に変更する必要があります。

于 2012-06-01T22:15:09.930 に答える
0

ヘルパー メソッドを作成することは、効率的であり、仕事をより簡単にし、ロジックをより明確にし、初心者に推奨される戦略であり、ロジックを分析してから組み立てます。より短いソリューションがありますが、これは使用されているロジックの全範囲を示しています。

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 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

これが私のものです。私は私のものを少し変えました。

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 に答える
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 に答える