LeetCode:逆文字のみ

タイトル説明

S文字列を指定すると、文字ではない文字が所定の位置に保持され、すべての文字の位置が逆になる「反転」文字列 が返されます。

入力:「ab-cd!」
出力:「dc-ba!」

アイデア

S.charAt(i)は、文字列Sの左側から始まる文字を表し、S.charAt(j)は、文字列Sの右側から始まる文字を表します。

StringBufferオブジェクトchを作成します

ケース1:左側の文字が文字の場合

  • ①右側の文字も文字なので、右側の文字をchにつなぎ合わせます。
  • ②右側の文字は文字ではないので、j-、ch、j--にスプライスされた文字を見つけます

ケース2:左側の文字が文字ではない

  • 直接にCHに接合文字の左側

コード

class Solution {
    public String reverseOnlyLetters(String S) {
        StringBuffer ch=new StringBuffer();
        int j=S.length()-1;
        for(int i=0;i<S.length();i++){
           if(Character.isLetter(S.charAt(i))){
               while(!Character.isLetter(S.charAt(j))){
                  j--; 
               }
               ch.append(S.charAt(j));
               j--;
           }else{
               ch.append(S.charAt(i));
           } 
        }
        return ch.toString();
    }
}

注:それが文字であるかどうかを判別します。Character.isLetter(XX)、スプライシングXX.append(YY)

おすすめ

転載: blog.csdn.net/weixin_43939602/article/details/114144098