题解 | #单词消消乐#

单词消消乐

https://www.nowcoder.com/practice/abb14fd6e1a34b0fb8016dfd7a99dfc5

使用栈先进后出的机制来消除相同元素。
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;
    }
};


全部评论

相关推荐

06-07 12:20
新余学院 Java
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务