NOI OJ 1 7 ID 17 字串判等

2021-09-24 04:41:20 字數 4663 閱讀 2969

總時間限制: 1000ms 記憶體限制: 65536kb

描述

判斷兩個由大小寫字母和空格組成的字串在忽略大小寫,且忽略空格後是否相等。

輸入

兩行,每行包含乙個字串。

輸出

若兩個字串相等,輸出yes,否則輸出no。

樣例輸入

a a bb bb ccc ccc

aa bbbb cccccc

樣例輸出

yes
關鍵點

字串中的字母變小寫

注意:string類中沒有這個方法,需要使用stl的algorithm庫的transform函式

使用方式

#include

#include

transform

(str.

begin()

, str.

end(

), str.

begin()

,::toupper)

;// 大寫

transform

(str.

begin()

, str.

end(

), str.

begin()

,::tolower)

;// 小寫

去除空格的方法

封裝了乙個函式

void

trim

(string &s)

}}

讀取一行到字串

使用getline(cin, s);

知識點

string類攻略

**:

建構函式

string s1()

;// s1 = ""

string s2

("hello");

// s2 = "hello"

string s3

("12345",1

,3);

//s3="234" 從"12345"的下標1開始,長度為3的子串

注意:不能這麼寫

string s1

('k');

string s2

(123

);

求字串的長度

string物件中字串的連線

string s1

("123"),

s2("abc");

s1.(s2)

;// s1 = "123abc"

string物件的比較

成員函式s1.compare(s2);

求string物件的字串

string substr(int n = 0, int m = string::npos) const;

如果省略m

mm或m

mm超過了字串的長度,則求出來的字串是從下標n

nn開始一直到字串結束的部分。

string s1

("12345");

cout << s1.

substr(2

,3)<< endl;

//345

cout << s1.

substr(2

)<< endl;

//345

交換兩個string物件的內容

s1.swap(s2);

查詢子串和字元

string類有一些查詢子串和字元的成員函式,返回值都是子串或字元在string物件字串中的位置。

如果查不到,則返回string::nposstring::npos是在string類中定義的乙個靜態常量。

格式:

// 找到第乙個"12"出現的位置,並返回。

string s1

("12345");

int n;if(

(n=s1.

find

("12"))

!=string:

:npos)

cout << s1.

substr

(n)<< endl;

例子:

string s1

("12345");

int n;if(

(n=s1.

find

("12"))

!=string:

:npos)

cout << s1.

substr

(n)<< endl;

//12345if(

(n=s1.

find

('4'))

!=string:

:npos)

cout << s1.

substr

(n)<< endl;

//45if(

(n=s1.

find

("!1"))

!=string:

:npos)

cout << s1.

substr

(n)<< endl;

注意:n一定要和string::npos比較,因為直接輸出s1.find()其實是0

cout << s1.

find

("12"

)<< endl;

//0cout << s1.

find

('1'

)<< endl;

//0cout << s1.

find

('!1'

)<< endl;

//0

替換子串

replace()函式可以對string物件的子串進行替換。

格式:

s1.

replace

(start,

,s2)

;

例子:

string s1

("12345");

int n = s1.

find

("234");

s1.replace

(n,3

,"678");

cout << s1 << endl;

//16785

刪除子串

erase()函式可以刪除string物件中的子串,返回值為物件自身的引用。

格式:從索引a

aa開始刪除b

bb個元素

s1.

erase

(a,b)

例子:

string s1

("12345");

s1.erase(2

,2);

cout << s1 << endl;

//125

插入字串

insert()可以在string物件中插入另乙個字串,返回值為物件自身的引用。

格式:

s1.

insert(2

,s2)

;

例子:

string s1

("123456");

s1.insert(3

,"abc");

cout << s1 << endl;

//123abc456

**

方法1:簡簡單單的麻煩方法。首先讀取為char陣列,然後,去除空格。再判斷是否類似。(僅用來練習)

/*

對於空格,在讀取時進行處理;在讀取完成後處理

1. 讀取完成後處理

*/int

remove_space

(char str)

ind_alpha++;}

// 去除空格

while

(str[ind]

!='\0'

) ind++;}

str[ind_alpha]

='\0'

;return ind_alpha;

}int

main()

for(

int i=

0;icout <<

"yes"

<< endl;

return0;

}

方法2:使用string

void

trim

(string &s)}}

intmain()

else

return0;

}

字串練習17 字串判等

name 17 字串判等 author date 01 09 17 21 35 description 17 字串判等 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述判斷兩個由大小寫字母和空格組成的字串在忽略大小寫,且忽略空格後是否相等。輸入兩行,每行包含乙個字串...

17 字串轉換整數 atoi

請你來實現乙個atoi函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如第乙個非空字元是數字,則直接將其與之後連續的數字字元組...

30 字元環( 1 7程式設計基礎之字串)

總時間限制 1000ms 記憶體限制 65536kb 描述 有兩個由字元構成的環。請寫乙個程式,計算這兩個字元環上最長連續公共字串的長度。例如,字串 abcefagadegkabuvklm 的首尾連在一起,構成乙個環 字串 madjkluvkl 的首尾連在一起,構成乙個另乙個環 uvklma 是這兩...