程式設計師面試金典 18 10字串變換

2021-08-19 16:38:58 字數 2463 閱讀 6472

我的答案。窮舉法,個人認為此題還是有點難度的。。。

利用了倒推法以及很高的時間複雜度才解決,並不值得推崇呀。

class change ; //把備胎集初始化為目標string

for(count_step = 1; ; count_step++)

return -1;

}//找出兩子字串不同的位

vector

count_diff_char(string &s1, string &s2)

void add_1_diff(vector

&dic, vector

&symbol, vector

&candi) }}

}return;

}};

參考**:

一、vector

1.判斷某元素是否存在

vector

vstr;

int nret = std::count(vstr.begin(), vstr.end(), "xiaochun");//判斷vector中是否有 "xiaochun" 這個元素

2.查詢某個元素

方法一:

自己寫迴圈遍歷

方法二:

vector

vec;

vector

::iterator iter;

string gpcode="sz000001";

iter = find(vec.begin(), vec.end(), gpcode);

if(iter != vec.end()) 

else 

注意:如果vector中儲存的是自定義型別(結構體/類),則需要為該型別過載==操作符。再用find

#include

#include

#include

#include //是c++的標準模版庫(stl)中最重要的標頭檔案之一,提供了大量基於迭代器的非成員模板函式。

class demostruct

bool

operator == (const demostruct & obj) const

//過載 「==」 操作符,函式最後的 const 別忘了,否則會報錯。(詳見: 

};int main()

return

0; }

二、map

1.判斷某元素是否存在

map mapdemo;

bool bret = mapdemo.count(100);//判斷mapdemo中是否有 key = 100 的元素

2.查詢某個元素

map::iterator iter = mapdemo.find(100);

if (iter != m_int.end())

else

參考**:

思路:

最短搜尋路徑,所以是廣度優先搜尋(bfs)。

按照定義,存在乙個字母差異的單詞為鄰居,因此採用逐位替換字母並查詢字典的方法尋找鄰居。

對佇列中的每個單詞記錄路徑長度。qu

eueir

ring

,int

>>

q que

ue

ir

ring

,int

>>

q; 從start進入佇列記作1.長度為i的字母的鄰居,如果沒有訪問過,則路徑長度為i+1.

也很複雜呀~

**:

class change //if

return result;

}private:

int bfs(string start, string end, vector

&dict) //if

// 存放單詞和單詞所在層次

queue

string, int> > q;

q.push(make_pair(start, 1));

// 判斷是否訪問過

vector

visited;

visited.push_back(start);

while(!q.empty()) //if

// 判斷之前訪問過或者是否在字典裡

vector

::iterator ite = find(dict.begin(), dict.end(), newword);

vector

::iterator ite2 = find(visited.begin(), visited.end(), newword);

if(ite2 == visited.end() && ite != dict.end()) //if

}//for

}//for

}//while

return -1;

}};

程式設計師面試金典 01 06 字串壓縮

字串壓縮。利用字元重複出現的次數,編寫一種方法,實現基本的字串壓縮功能。比如,字串aabcccccaaa會變為a2b1c5a3。若 壓縮 後的字串沒有變短,則返回原先的字串。你可以假設字串中只包含大小寫英文本母 a至z 示例1 輸入 aabcccccaaa 輸出 a2b1c5a3 示例2 輸入 ab...

《程式設計師面試金典》 反轉字串

題目描述 請實現乙個演算法,在不使用額外資料結構和儲存空間的情況下,翻轉乙個給定的字串 可以使用單個過程變數 給定乙個string inistring,請返回乙個string,為翻轉後的字串。保證字串的長度小於等於5000。測試樣例 this is nowcoder 返回 redocwon si s...

程式設計師面試金典 面試題01 06 字串壓縮

字串壓縮。利用字元重複出現的次數,編寫一種方法,實現基本的字串壓縮功能。比如,字串aabcccccaaa會變為a2b1c5a3。若 壓縮 後的字串沒有變短,則返回原先的字串。你可以假設字串中只包含大小寫英文本母 a至z 示例1 輸入 aabcccccaaa 輸出 a2b1c5a3 示例2 字串長度在...