C++面試題之寫一個在一個字串中尋找一個子串第一個位置的函式
阿新 • • 發佈:2019-01-23
#include <iostream>
using namespace std;
int search_str(char *strDest ,const char *strSrc, int n )
{
int count = 1;
//將搜尋的字串儲存在臨時指標變數a中
char * a = strDest;
//開始搜尋
while(*strSrc != '\0')
{
//讓strDest指向a,即字串的第一個字元,目的是在一次比較之後,讓strDest指回字串的首部。
strDest = a;
//判斷strSrc和strDest的當前字元是否相等
if (*strSrc == *strDest)
{
//當這兩個字串的當前字元相等,判斷它們是否是連續相等
while (*strDest != '\0')
{
//如果相等,往後判斷,直到不滿足迴圈條件,若不等,跳出該迴圈
if (*strSrc == *strDest)
{
count++;
strSrc++;
strDest++;
}
else
{
break;
}
}
}
//判斷所要搜尋的字串是否遍歷完,若遍歷完,則表示已找到完全相等的,跳出整個迴圈。否則繼續尋找下一個相等的部分。
if (*strDest == '\0') {
break;
}
count++;
strSrc++;
}
//用尋找完的總長度 - 所需搜尋的字串長度,即為它在被所搜尋字串的位置。
return count - n;
}
int main(int argc, const char * argv[]) {
char a[50];
char b[50];
cout<<"請輸入第一個字串a:"<<endl;
cin>>a;
cout<<"請輸入第二個字串b,尋找其第一個字元在a中的位置:"<<endl;
cin>>b;
int i = 0;
//計算所需搜尋的字串的長度
while (b[i] != '\0') {
i++;
}
cout<<"b的第一個字元在a中的位置為:第"<<search_str(b,a,i)<<endl;
return 0;
}
例項結果:
請輸入第一個字串a:
zhangqifangyouangfu
請輸入第二個字串b,尋找其第一個字元在a中的位置:
angf
b的第一個字元在a中的位置為:第15
歡迎指點指點。O(∩_∩)O謝謝