使用栈先进后出的机制来消除相同元素。
1)第一次词要先全部入栈
2)之后的词从词开头与第一个词的词尾比较,出现不相等后后面的字符全入栈
3)注意字符串与字符的运算
string str ="";
str = str + 'a'; //ok
str += 'a'; //ng
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param Words string字符串vector
* @return string字符串
*/
string WordsMerge(vector<string>& Words) {
// write code here
stack<char> st;
int n = Words.size();
// 第一个词
for (int i = 0; i < Words[0].size(); i++) {
st.push(Words[0][i]);
}
for (int i = 1; i < n; i++) {
string str = Words[i];
int m = str.size();
bool flag = true;
for (int j = 0; j < m; j++) {
if (flag && !st.empty() && st.top() == str[j]) {
cout << st.top() <<endl;
st.pop();
} else {
st.push(str[j]);
flag = false;
}
}
}
string res = "";
for (int i = st.size() - 1; i >= 0; i--) {
res = res + st.top();
st.pop();
}
reverse(res.begin(), res.end());
return res;
}
};

京公网安备 11010502036488号