function palindromePairs(words: string[]): number[][] {\n let result = [];\n let wordsR = [];\n for(let i = 0; i < words.length; i++){\n wordsR[i] = words[i].split('').reverse().join('');\n }\n for(let i = 0; i < words.length; i++){\n for(let j = 0; j < words.length; j++){\n if(i==j) {\n continue;\n }\n let longStr = '';\n let shortStr = '';\n if(words[i].length >= words[j].length ){\n longStr = words[i];\n shortStr = wordsR[j];\n }else{\n longStr = wordsR[j];\n shortStr = words[i];\n }\n if(longStr.slice(0,shortStr.length) === shortStr &&\n verify(longStr.slice(shortStr.length))){\n result.push([i,j]);\n }\n }\n }\n return result;\n}\nfunction verify(s){\n for(let i = 0, j=s.length-1;i < j;i++,j--){\n if(s[i] !== s[j]){\n return false\n }\n }\n return true;\n}//代码1\nclass Solution {\npublic:\n vector<vector> palindromePairs(vector& words) {\n vector<vector> result;\n vector wordsR;\n for(int i = 0; i < words.size(); i++){\n string reverseWord = words[i];\n reverse(reverseWord.begin(), reverseWord.end());\n wordsR.push_back(reverseWord);\n }\n for(int i = 0; i < words.size(); i++){\n for(int j = 0; j < words.size(); j++){\n if(i == j) {\n continue;\n }\n string longStr = '';\n string shortStr = '';\n if(words[i].length() >= words[j].length() ){\n longStr = words[i];\n shortStr = wordsR[j];\n }else{\n longStr = wordsR[j];\n shortStr = words[i];\n }\n if(longStr.substr(0,shortStr.length()) == shortStr && verify(longStr.substr(shortStr.length()))){\n \tresult.push_back({i,j});\n }\n }\n }\n return result;\n }\n bool verify(string s){\n int i = 0;\n int j = s.length()-1;\n while(i < j){\n if(s[i] != s[j]) return false;\n i++;\n j--;\n }\n return true;\n }\n};//代码2\n为什么代码2(C++)超时了而代码1(TypeScript)却没有内容:代码2(C++)超时而代码1(TypeScript)没有超时的原因可能是因为两种语言的代码执行效率不同。C++是一种编译型语言,而TypeScript是一种解释型语言。编译型语言在编译时会将代码转换为机器语言,执行效率较高;而解释型语言会逐行解释执行代码,执行效率较低。\n\n另外,代码2中使用了C++的标准库函数reverse,这个函数的时间复杂度为O(n),而代码1中直接使用了循环来反转字符串,时间复杂度可能会更低。\n\n此外,也有可能是输入的数据规模不同导致的。如果输入的words数组长度较大,那么代码2可能会因为双重循环的嵌套而导致超时,而代码1可能由于输入规模较小而没有超时。\n\n综上所述,代码1可以较快地找到回文对,而代码2可能由于语言差异、算法实现等因素导致了超时。


原文地址: https://www.cveoy.top/t/topic/p2TX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录