北大信科機試練習之基礎字串

2021-09-24 06:01:57 字數 3853 閱讀 3687

描述有兩個由字元構成的環。請寫乙個程式,計算這兩個字元環上最長連續公共字串的長度。例如,字串「abcefagadegkabuvklm」的首尾連在一起,構成乙個環;字串「madjkluvkl」的首尾連在一起,構成乙個另乙個環;「uvklma」是這兩個環的乙個連續公共字串。

輸入一行,包含兩個字串,分別對應乙個字元環。這兩個字串之間用單個空格分開。字串長度不超過255,且不包含空格等空白符。

輸出輸出乙個整數,表示這兩個字元環上最長公共字串的長度。

樣例輸入

abcefagadegkabuvklm madjkluvkl

樣例輸出

6

思考與做題時遇到的錯誤:

字串收尾相接,首先想到取模,再想到字串*2再拼接到源字串後

長度最長為最短字串的長度遇到的錯誤:在迴圈的內部,不要更改迴圈變數的值

**:

#include 

#include

#include

using namespace std;

int main()

if(temp > ans)

ans = temp;}}

cout << ans;

}

題目:

每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字、1位識別碼和3位分隔符,其規定格式如「x-***-***xx-x」,其中符號「-」是分隔符(鍵盤上的減號),最後一位是識別碼,例如0-670-82162-4就是乙個標準的isbn碼。isbn碼的首位數字表示書籍的出版語言,例如0代表英語;第乙個分隔符「-」之後的三位數字代表出版社,例如670代表維京出版社;第二個分隔之後的五位數字代表該書在出版社的編號;最後一位為識別碼。

識別碼的計算方法如下:

首位數字乘以1加上次位數字乘以2……以此類推,用所得的結果mod 11,所得的餘數即為識別碼,如果餘數為10,則識別碼為大寫字母x。例如isbn號碼0-670-82162-4中的識別碼4是這樣得到的:對067082162這9個數字,從左至右,分別乘以1,2,…,9,再求和,即0×1+6×2+„„+2×9=158,然後取158 mod 11的結果4作為識別碼。

你的任務是編寫程式判斷輸入的isbn號碼中識別碼是否正確,如果正確,則僅輸出「right」;如果錯誤,則輸出你認為是正確的isbn號碼。

輸入只有一行,是乙個字串行,表示一本書的isbn號碼(保證輸入符合isbn號碼的格式要求)。

輸出共一行,假如輸入的isbn號碼的識別碼正確,那麼輸出「right」,否則,按照規定的格式,輸出正確的isbn號碼(包括分隔符「-」)。

樣例輸入

樣例 #1:

0-670-82162-4

樣例 #2:

0-670-82162-0

樣例輸出

樣例 #1:

right

樣例 #2:

0-670-82162-4

思考與做題時遇到的錯誤:

字串分割,用乙個變數記錄當前已經分割了多少

注意字元和數字之間的轉換

審題一定要注意

**:

#include 

#include

using namespace std;

int main()

}else

else

check = input[i]+0

-'0';}

}if(sum %

11== check)

cout <<

"right"

<< endl;

else

}

描述

編寫程式,讀入一行英文(只包含字母和空格,單詞間以單個空格分隔),將所有單詞的順序倒排並輸出,依然以單個空格分隔。

輸入輸入為乙個字串(字串長度至多為100)。

輸出輸出為按要求排序後的字串。

樣例輸入

i am a student

樣例輸出

student a am i

思考與做題時遇到的錯誤:

按自己的方法分割的時候,注意字串的最後以為要單獨進行乙個加入處理

#include 

#include

#include

using namespace std;

int main()

else}s

.push

(sub)

;//重要!!!這個地方老是忘記處理

while(!

s.empty()

)}

描述

輸入乙個句子(一行),將句子中的每乙個單詞翻轉後輸出。

輸入只有一行,為乙個字串,不超過500個字元。單詞之間以空格隔開。

輸出翻轉每乙個單詞後的字串,單詞之間的空格需與原文一致。

樣例輸入

hello world

樣例輸出

olleh drlow

#include 

#include

using namespace std;

intmain()

}for

(int j = sub.

length()

-1;j >=

0;j --

) cout << sub[j]

;}

描述

輸入1行句子(不多於200個單詞,每個單詞長度不超過100),只包含字母、空格和逗號。單詞由至少乙個連續的字母構成,空格和逗號都是單詞間的間隔。

試輸出第1個最長的單詞和第1個最短單詞。

輸入一行句子。

輸出兩行輸出:

第1行,第乙個最長的單詞。

第2行,第乙個最短的單詞。

樣例輸入

i am studying programming language c in peking university

樣例輸出

programming

i

提示

如果所有單詞長度相同,那麼第乙個單詞既是最長單詞也是最短單詞。

思考與做題時遇到的錯誤:

substr(int start, int length) 函式第二個引數是字串的長度

字串操作時,如果是空格分割處理的,文字最後乙個片段容易不受處理,這時可在字串最後加乙個空格

表示空格字元,要用單引號,不是雙引號

#include 

#include

using namespace std;

intmain()

else

if(end != start && end - start < minlen)

start = i +1;

//start儲存有效單詞的第一位

end = start;

//end儲存有效單詞的最後一位}}

cout << maxstr << endl << minstr << endl;

return0;

}

對字串String的測試練習

字串的測試練習,與君共勉!不要見笑.public class teststring public static void stringtest 判斷乙個字串在另乙個字元中第一次出現的位置 string sf a int index sa.indexof sf system.out.println 4...

字串基礎練習

判斷乙個字串是否有重複字元 思路 如果考慮用的是ascii碼,每個字元的大小在0 127之間 可以建立乙個陣列,長度為128 遍歷字串中的每個字元,將陣列中索引為該字元的ascii碼的位置加1。比如,如果字元是a,則將下標為97的位置加1,以標明字元出現的次數 如果陣列中有元素大於1,則字串有重複元...

華為機試練習題 3 分解字串

題目 按要求分解字串,輸入兩個數m,n m代表輸入的m串字串,n代表輸出的每串字串的位數,不夠補0。例如 輸入2,8,abc 123456789 則輸出為 abc00000 12345678 90000000 日期 2015 06 18 題目 分解字串 部落格 include include usi...