我正试图在leetcode上解决这个问题,并尝试在纸笔上运行它,似乎我应该得到答案。但我的代码在JAVA中显示TLE有人能建议我如何摆脱TLE并提交我的解决方案吗?为什么显示TLE?
问题:检查字符串是否可以通过子字符串排序操作进行转换。
链接
我的代码:
class Solution {
public boolean isTransformable(String s, String t) {
int p1 = s.length()-1;
int p2 = t.length()-1;
int p3 = s.length()-1;
while(p1>-1){
if(intAt(s,p1)==intAt(t,p2)){
p1--;
p2--;
}else{
while(intAt(s,p3)!=intAt(t,p2)){
p3--;
if(p3==0 && intAt(s,p3)!=intAt(t,p2)){
return false;
}
}
swap(s,intAt(s,p1),intAt(s,p3));
}
}
if(s.equals(t)){
return true;
}
return false;
}
public int intAt(String s, int index)
{
int r = Integer.parseInt(s.substring(index, index+1));
return r;
}
void swap(String s, int first, int second) {
int temp = first;
first = second;
second = temp;
}
}
我觉得你太努力了。您只需要检查是否可以使用字符串s中的数字创建字符串t。(不需要交换(。
首先,检查两个字符串的长度是否相同。
其次,检查字符串S中的每个数字,如果该数字存在于字符串t中,则从字符串t中删除该数字。
- 如果在任何情况下出现false,则应返回false
第三,确保字符串t在循环s时为空。
如果没有出现错误,则应返回true;
您的TLE错误可能是因为检查时间过长。(不是java错误(。