跳至主要内容

336. 回文对

class Solution {
public:
    bool isPalindrome(string word, int left, int right) {
        while (left < right)
            if(word[left++] != word[right--]) return false;
        return true;
    }
   
    string reverse(string tmp)
    {
        string ret;
        for (int i = tmp.length() - 1; i >= 0; i--)
        {
            ret.push_back(tmp[i]);
        }
        return ret;
    }
   
    vector<vector<int>> palindromePairs(vector<string>& words) {
       
        vector<vector<int>> ret;
       
        map<string, int> index;
        set<int> st;
       
        for (int i = 0; i < words.size(); i++)
        {
            index[words[i]] = i;
            st.insert(words[i].size());
        }
       
        for (int i = 0; i < words.size(); i++)
        {
            string tmp = words[i];
            tmp = reverse(tmp);
            if (index.find(tmp) != index.end() && index[tmp] != i)
            {
                vector<int> ret1;
                ret1.push_back(i);
                ret1.push_back(index[tmp]);
                ret.push_back(ret1);
            }
           
            for (set<int>::iterator it = st.begin(); it != st.find(tmp.length()); it++)
            {
                string left = tmp.substr(0, *it);
                string right = tmp.substr(tmp.length() - *it);

                if (index.find(left) != index.end() && isPalindrome(tmp, *it, tmp.length() - 1))
                {
                    vector<int> ret1;
                    ret1.push_back(index[left]);
                    ret1.push_back(i);
                    ret.push_back(ret1);
                }

                if (index.find(right) != index.end() && isPalindrome(tmp, 0, tmp.length() - *it - 1))
                {
                    vector<int> ret1;
                    ret1.push_back(i);
                    ret1.push_back(index[right]);
                    ret.push_back(ret1);
                }
            }
       
        }
       
        return ret;
    }
};

评论

此博客中的热门博文

老毛子路由器无线桥接问题

  信道带宽:改成20M  关闭 DHCP 服务器  关闭动态 (DHCP) 路由 修改IP地址从192.168.123.1到192.168.1.114  无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择LAN bridge 连上上级wifi done 路由器自身可能上不去网,执行: route add default  gw 192.168.1.1 不过这种方式无法翻墙 ////////////////////////////////////////////////////////////// 第二种方式 不改信道不关闭DHCP,保持网段是192.168.123.1 无线 AP 工作模式:选择AP-Client+AP 无线 AP-Client 角色:选择WAN 连上上级wifi done 路由器可以翻墙,但是192.168.1.1的机器访问不了192.168.123.1的机器 解决方法: 在192.168.123.1的机器把想要访问的机器比如192.168.123.100设置DMZ主机,这样就可以访问了,在 192.168.1.1能看到分配的ip比如192.168.1.115