劍指offer刷題day02
刷題(劍指offer02)
替換空格
題目:
請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy
分析1:
題目所給的函式的引數為stringbuffer型別,考察的是對字串的相關內容的瞭解程度。因此,需要對字元型別進行系統的複習。
Java字串主要包含 String類和StringBuffer類和Stringbuilder類,關於2個型別的差別主要是
如果一個StringBuffer物件在字串緩衝區被多個執行緒使用時,StringBuffer中很多方法可以帶有synchronized關鍵字,所以可以保證執行緒是安全的,但StringBuilder的方法則沒有該關鍵字,所以不能保證執行緒安全,有可能會出現一些錯誤的操作。所以如果要進行的操作是多執行緒的,那麼就要使用StringBuffer,但是在單執行緒的情況下,還是建議使用速度比較快的StringBuilder。
(一個執行緒訪問一個物件中的synchronized(this)同步程式碼塊時,其他試圖訪問該物件的執行緒將被阻塞)。
另外字串的一些常用操作如下:(其操作函式如下):
1.獲取字串中的第i個字元方法charAt(i)
2.獲取指定位置的字元方法getChars(4個引數)
str.getChars(indexBegin,indexEnd,array,arrayBegin);
3.字串的比較函式
int result = str1.compareTo(str2);
int result = str1.compareToIgnoreCase(str2);
boolean result = str1.equals(str2);
boolean result = str1.equalsIgnoreCase(str2);
4.相互轉換
轉化為其他型別:
Integer.parseInt(str)
轉換為字串型別:
String.valueOf([int] i)
Int.toString([int] i)
5.字串查詢
indexOf()方法
lastIndexOf()方法
6.字串擷取與拆分
擷取substring()方法 :
格式1:String result = str.substring(index);
格式2:String result = str.substring(beginIndex,EndIndex);
拆分split()方法:
格式1 :String strArray[] = str.split(正規表示式);
格式2:String strArray[] = str.split(正規表示式,limit);
本題的解題思路有2:
1:直接呼叫Java的字串替代函式:replace函式
樣例為:
public static void main(String[] args) {
System.out.println("hello$".replaceAll("$",""));
System.out.println("hello$".replace("$",""));
System.out.println("hello$".replaceAll("\\$",""));
}
輸出結果如下:
hello$
hello
hello
replace對應的是普通字串,replaceAll對應的是正規表示式。
所以本題可通過程式碼如下解決:
public class Solution {
public String replaceSpace(StringBuffer str) {
return str.toString().replace(" ", "%20");
}
}
同理可以通過如下程式碼:
public class Solution {
public String replaceSpace(StringBuffer str) {
int n = str.length();
for(int i=0; i<n; i++) {
//charAt函式是字串使用比較頻繁的api。
if(str.charAt(i) == ' ') {
n += 2;
str.replace(i, i+1, "%20");
}
}
return str.toString();
}
}
特別需要注意的是+符號=符號一定要使用英文符號,不然的話,會一直顯示編譯不通過的。
相關文章
- 劍指offer刷題記錄
- LeetCode-劍指Offer刷題記錄LeetCode
- 劍指Offer系列刷題筆記彙總筆記
- ✏️ JavaScript版 | 10大專題 | 劍指offer刷題筆記 ✏️JavaScript筆記
- 刷題記錄:劍指offer+遇到的筆試題+LeetCode筆試LeetCode
- 劍指Offer題解合集
- PHPer也刷《劍指Offer》之連結串列PHP
- 劍指offer第41~50題
- 劍指OFFER
- 刷劍指
- 劍指offer刷題之路--1.陣列中重複的數字陣列
- 劍指offer第49題 醜數
- 劍指offer刷題記錄_2. 二維陣列中的查詢陣列
- 《劍指offer》JAVA題解,LeetCode評測JavaLeetCode
- 劍指offer導航
- Leetcode劍指offer(八)LeetCode
- 劍指offer16
- 劍指 offer20
- 劍指 offer21
- 【劍指offer】讓抽象問題具體化抽象
- 【LeetCode刷題(簡單程度)】劍指 Offer 57. 和為s的兩個數字LeetCode
- 劍指offer刷題筆記-32.從上到下列印二叉樹 進階筆記二叉樹
- 【劍指Offer】矩形覆蓋
- 劍指offer——跳臺階
- 六、劍指 Offer(25~29)
- 劍指offer-JavaScript版JavaScript
- 「劍指offer」27道Mybatis面試題含解析MyBatis面試題
- 劍指offer-第2章
- 劍指 offer(1) -- 陣列篇陣列
- 【劍指offer】【2】字串的空格字串
- 劍指offer面試題(41-50)——java實現面試題Java
- GitHub#algorithm#:《劍指offer》 的50道面試題GithubGo面試題
- 劍指OFFER題目分類(共選擇43道)
- 劍指offer中幾道演算法題的思考演算法
- [劍指offer] JAVA版題解(完整版)更新中。。。Java
- 劍指 Offer 38. 字串的排列字串
- 《劍指 Offer》棧實現佇列佇列
- LeetCode|劍指 Offer 49.醜數LeetCode