java:比賽中經常使用方法整理——字符串(基礎)

一.將字符串轉化爲字符數組:css

  toCharArray返回一個字符數組。html

char[] a=J.toCharArray();

二.字符串的長度java

字符串的長度和字符數組的長度是不一'樣'的.面試

字符串長度(字符串中的字符個數):正則表達式

1 String J="HELLO"; 2 J.length();

字符串的長度爲5,且是一個方法length();算法


 

字符數組的長度:api

String J="HELLO"; char a=J.toCharArray(); System.out.println(a.length);

字符數組須要獲取長度,是訪問一個對象length。數組

三.字符串的比較oracle

 

我詳細閱讀了這篇文章,總結了一下:app

1.基本數據類型,也稱原始數據類型。byte,short,char,int,long,float,double,boolean 
他們之間的比較,應用雙等號(==),比較的是他們的值。 


2.複合數據類型(類) 
當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址。

因此,除非是同一個new出來的對象,他們的比較後的結果爲true,不然比較後結果爲false。

因此比較字符串是否相等時,要使用equlas方法。

String str1="Hello"; String str2="Hello"; str1.equals(str2);// return true

 

想看詳細的文章地址以下:

(沒總結的地方,包括重寫equals方法,緩衝池中的String)

https://www.cnblogs.com/dongguol/p/5845076.html

 

四.遍歷字符串

charAt(int index);// 返回指定索引處的 char 值。

返回指定索引處的 char 值。索引範圍爲從 0length() - 1。序列的第一個 char 值位於索引 0 處,第二個位於索引 1 處,依此類推,這相似於數組索引。 

 

五.將字符串轉爲大寫或小寫

toLowerCase(Locale locale) //使用默認語言環境的規則將此 String 中的全部字符都轉換爲小寫。
 toUpperCase() //使用默認語言環境的規則將此 String 中的全部字符都轉換爲大寫。 

能夠作一作leetcode上的一道簡單題:

https://leetcode-cn.com/problems/to-lower-case/

 

六.替換字符串的匹配的字串

replace(CharSequence target, CharSequence replacement) //使用指定的字面值替換序列替換此字符串全部匹配字面值目標序列的子字符串。

replaceAll就不介紹了,區別在這篇文章有詳細介紹:

http://www.javashuo.com/article/p-vvmtwglx-gt.html

掌握這個方法就能夠快速作一下這道題:

461. 漢明距離

兩個整數之間的漢明距離指的是這兩個數字對應二進制位不一樣的位置的數目。

給出兩個整數 x 和 y,計算它們之間的漢明距離。

注意:
0 ≤ xy < 231.

示例:

輸入: x = 1, y = 4

輸出: 2

解釋:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

上面的箭頭指出了對應二進制位不一樣的位置。

個人解法:

1 class Solution { 2     public int hammingDistance(int x, int y) { 3         String str=Integer.toString(x^y,2); 4         return str.replace("0","").length(); 5  } 6 }

 

如下爲後期補充:

replaceFirst(String regex, String replacement) // 使用給定的 replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。

相比replace,這個方法只替代一個字符,學了這個能夠作一下這個題。

389. 找不一樣

給定兩個字符串 s 和 t,它們只包含小寫字母。

字符串 t 由字符串 s 隨機重排,而後在隨機位置添加一個字母。

請找出在 t 中被添加的字母。

 

示例:

輸入:
s = "abcd"
t = "abcde"

輸出:
e

解釋:
'e' 是那個被添加的字母。

個人解法:
1 class Solution { 2     public char findTheDifference(String s, String t) { 3         char[] a=s.toCharArray(); 4         for(char i:a){ 5           t = t.replaceFirst(String.valueOf(i),""); 6  } 7         return t.charAt(0); 8  } 9 }

簡單可是時間和空間用的太多了,可是比賽中追求作題的速度了,有這點就夠了。

運行速度更快的可使用位運算和哈希表

七.字符串是否包含某些字符

contains(CharSequence s) //當且僅當此字符串包含指定的 char 值序列時,返回 true。

 

551. 學生出勤記錄 I

給定一個字符串來表明一個學生的出勤記錄,這個記錄僅包含如下三個字符:

  1. 'A' : Absent,缺勤
  2. 'L' : Late,遲到
  3. 'P' : Present,到場

若是一個學生的出勤記錄中不超過一個'A'(缺勤)而且不超過兩個連續的'L'(遲到),那麼這個學生會被獎賞。

你須要根據這個學生的出勤記錄判斷他是否會被獎賞。

示例 1:

輸入: "PPALLP"
輸出: True

示例 2:

輸入: "PPALLL"
輸出: False

如下爲個人解法:
 1 class Solution {  2     public boolean checkRecord(String s) {  3        int a=0;  4         if(s.contains("LLL")){return false;}  5         for(int i=0;i<s.length();i++){  6             if(s.charAt(i)=='A'){  7                 a++;  8  }  9             if(a>1){return false;} 10  } 11         return true; 12         
13  } 14 }

 

固然有時候須要返回字串在字符串裏面出現得第一個索引位置:

int indexOf(int ch) //返回指定字符在此字符串中第一次出現處的索引。 
 int indexOf(int ch, int fromIndex) //返回在此字符串中第一次出現指定字符處的索引,從指定的索引開始搜索。 
 int indexOf(String str) //返回指定子字符串在此字符串中第一次出現處的索引。 
 int indexOf(String str, int fromIndex)   // 返回指定子字符串在此字符串中第一次出現處的索引,從指定的索引開始。 

如下例題使用這個方法十分方便:

28. 實現strStr()

實現 strStr() 函數。

給定一個 haystack 字符串和一個 needle 字符串,在 haystack 字符串中找出 needle 字符串出現的第一個位置 (從0開始)。若是不存在,則返回  -1。

示例 1:

輸入: haystack = "hello", needle = "ll"
輸出: 2

示例 2:

輸入: haystack = "aaaaa", needle = "bba"
輸出: -1

說明:

當 needle 是空字符串時,咱們應當返回什麼值呢?這是一個在面試中很好的問題。

對於本題而言,當 needle 是空字符串時咱們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。

 

對於這道題本來的意思是使用kMP算法,可是系統封裝好的方法,直接調用:

1 class Solution { 2     public int strStr(String haystack, String needle) { 3         return haystack.indexOf(needle); 4  } 5 }
相關文章
相關標籤/搜索