總時間限制: 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::npos
,string::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 是這兩...