D'Souza氏階:
私は最近、codehubに質問を通過して、私はこのクエリを解決することができませんでした。誰の助けを借り、私はどのようにこれを解決することができることはできますか?
あなたは、あなたが選択し、任意の長さのSの任意の部分文字列を逆にすることができます長さNの文字列Sを与えられています。あなたは何回この操作多くの数を実行することが許可されています。
操作を行うことにより、ミスマッチの最大数を決定します。
ミスマッチ(S)は、対応する位置の数として定義されている文字がSで異なっており、(S)を逆ました。例えば:S = ABAB、(S)=馬場を逆。不一致= 4、S = ABCAの数。不一致= 2の数。
擬似コード:
static int solve( String S, int n)
{
//To do
}
コードは、これはより容易に解釈することができますどのように行われ、解決するために接近した後、いくつかのいずれかを説明することができた場合に参考になります。
モンキー:
ここでは、最初に与える文字列を逆にしてからちょうど反復を与える文字列を通過して与える文字列と逆の文字列の両方にと不一致カウンタを増やすがある場合、各インデックスで文字を比較することができます。
以下のコードをチェックしてください
public static void main(String args[])throws IOException {
String s = "abab";
System.out.println(solve(s,s.length()));
}
static int solve( String s, int n)
{
//this can also be used to reverse string
//String reversed = new StringBuilder(s).reverse().toString();
String revStr = Stream.of(s)
.map(word->new StringBuilder(word).reverse())
.collect(Collectors.joining(" "));
int counter = 0;
for(int loop=0; loop < n; loop++){
if(s.charAt(loop)!=revStr.charAt(loop)){
++counter;
}
}
return counter;
}