[問題の説明]
、にそれぞれのスペースを置き換えるために、文字列関数を実装してください「20%。」例えば、文字列があるとき、私たちは幸せです。文字列が後に我々%20Are%20Happy交換後。
[思考]の答え
- スペースを探します
- スペースに置き換え
置き換えるためのスペースを見つけるために、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の差