如何修复我的java代码中的TLE(超过时间限制)



我正试图在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错误(。

最新更新