[JAVA] 2番目の質問[プランを受賞]

[問題の説明]

、にそれぞれのスペースを置き換えるために、文字列関数を実装してください「20%。」例えば、文字列があるとき、私たちは幸せです。文字列が後に我々%20Are%20Happy交換後。

[思考]の答え

  1. スペースを探します
  2. スペースに置き換え
    置き換えるためのスペースを見つけるために、2.1新しい文字列を、元の非空白文字が追加される
    前に戻ってから、元に基づいて2.2モバイル位置を
public class Solution {
  public String replaceSpace(StringBuffer str) {
      StringBuffer buf = new StringBuffer();
      if(str==null)
          return str.toString();
  	for(int i=0;i < str.length();i++) {
      if(str.charAt(i)!=' '){
          buf.append(str.charAt(i));
      } 
      else
      {
          buf.append("%20");
      }
      }
      return buf.toString();//牛客网一定要讲StringBuffer类型转化为String类型才能通过 
  } 
}

public class Solution {
    public String replaceSpace(StringBuffer str) {
        int spacenum = 0;//spacenum为计算空格数
        for(int i=0;i<str.length();i++){
            if(str.charAt(i)==' ')
                spacenum++;
        }
        int indexold = str.length()-1; //indexold为为替换前的str下标
        int newlength = str.length() + spacenum*2;//计算空格转换成%20之后的str长度
        int indexnew = newlength-1;//indexold为为把空格替换为%20后的str下标
        str.setLength(newlength);//使str的长度扩大到转换成%20之后的长度,防止下标越界
        for(;indexold>=0 && indexold<newlength;--indexold){ 
                if(str.charAt(indexold) == ' '){  //
                str.setCharAt(indexnew--, '0');
                str.setCharAt(indexnew--, '2');
                str.setCharAt(indexnew--, '%');
                }else{
                    str.setCharAt(indexnew--, str.charAt(indexold));
                }
        }
        return str.toString();
    }
}

#####でReplaceAll利用機能

public class Solution {
    public String replaceSpace(StringBuffer str) {
        return str.toString().replaceAll("\\s", "%20");
    }
}

[概要]

1.トラバーサル文字列
String str="CryptWinter";

// 方法一

for(int i=0;i < str.length();i++) {

   System.out.println(str.charAt(i)); 
}

//方法二

for(int i=0;i < str.length();i++) {

   System.out.println(str.substring(i,i+1)); 
   
}

//方法三

char[]  c = str.toCharArray();

for(int i=0;i < c.length;i++) {

  System.out.println(c[i]);
}

2.文字列関数共通のStringBuffer
  • StringBufferのSBを作成する=新しいStringBufferを();
  • 変換文字列のtoString()
  • (文字列s)はアペンド増加
  • 挿入INSERT(int型オフセット、I int型)
  • インデックスを指定のcharAt(int型のインデックス)
    StringBufferのメソッド
StringBuilderとの違いと3.StringとStringBufferの
  • データ列定数のストリング少量、文字列長不変
  • StringBufferのは、大量のデータをマルチスレッド化することは、頻繁に文字列の内容を変更します
  • StringBufferのに比べて約10%だけ改善する大量のデータのStringBuilderのシングルスレッド動作効率
    参照リンク:Javaの文字列のStringBufferとのStringBuilderの差
公開された22元の記事 ウォンの賞賛0 ビュー431

おすすめ

転載: blog.csdn.net/dadongwudi/article/details/104932674