如何修复我的java代码中的TLE(超出时间限制)?
我正在尝试在 leetcode 上解决这个问题,并且尝试在笔和纸上运行它,看来我应该得到我的答案。但我的代码在 JAVA 中显示 TLE。 有人可以建议我如何摆脱 TLE 并提交我的解决方案吗?为什么显示 TLE?
问题:检查字符串是否可以通过子字符串排序操作进行转换。
链接< /strong>
我的代码:
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;
}
}
I am trying to solve this question on leetcode and I have tried running it on pen and paper and it seems I should get my answer. But my code is showing TLE in JAVA. Can someone suggest me how to get rid of TLE and submit my solution? Why is it showing TLE?
Question: Check if string is transformable with substring sort operations.
My code:
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;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为你太努力了。您应该只检查是否可以使用字符串 s 中的数字创建字符串 t。 (不需要交换)。
首先,检查两个字符串的长度是否相同。
其次,检查字符串 S 中的每个数字,如果该数字出现在字符串 t 中。如果该数字存在,则从字符串 t 中删除该数字。
第三,当你完成循环 s 时,确保字符串 t 为空。
如果没有发生错误,则应该返回 true;
您的 TLE 错误可能是因为您花费了太长时间进行检查。 (不是java错误)。
I think you are trying too hard. You should just check if it's possible to create string t, using the numbers from string s. (Swapping is not needed).
First, check if both string have the same length.
Second, check for each number in string S if, this number is present in string t. Remove this number if present from string t.
Third, make sure string t is empty when you are done looping though s.
If no errors occurred, you should return true;
You TLE errors is probably there because you are taking too long to do the check. (not a java error).