Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';这种算法在跟踪时有意义吗?_Java_Algorithm_Debugging - Fatal编程技术网

Java 为什么';这种算法在跟踪时有意义吗?

Java 为什么';这种算法在跟踪时有意义吗?,java,algorithm,debugging,Java,Algorithm,Debugging,我已经追踪这段代码很长时间了 我明白。但在某种程度上,它停止了对我的意义 在name和type中,位置0是同一个字母,因此增加j和i(j++和i++)。i=1,j=1 在位置1中,它们不相同,因此只有增量j。i=1,j=2 在位置2中,它们不相同,因此只有增量j。i=1,j=3。 这就是我被困的地方 为什么在控制台中它也在增加i(i=2,j=3)呢?字母是不同的,这意味着只有增量j。有人能指出我没看到的吗 这就是我正在做的Leetcode问题 这是我的密码: class Solution {

我已经追踪这段代码很长时间了

我明白。但在某种程度上,它停止了对我的意义

name
type
中,位置0是同一个字母,因此增加j和i(
j++
i++
)。i=1,j=1

在位置1中,它们不相同,因此只有增量j。i=1,j=2

在位置2中,它们不相同,因此只有增量j。i=1,j=3。 这就是我被困的地方

为什么在控制台中它也在增加
i
i=2,j=3
)呢?字母是不同的,这意味着只有增量
j
。有人能指出我没看到的吗

这就是我正在做的Leetcode问题

这是我的密码:

class Solution {
    public String name = "alex";
    public String typed = "aaleex";
    public boolean isLongPressedName(String name, String typed) {
        if(name == null) return false;
        if(typed == null) return false;

        int i = 0;
        int j = 0;

        for(;i < name.length() && j < typed.length();) {
            if(name.charAt(i) == typed.charAt(j)) {
                j++;
                i++;
                System.out.println("END IF");
            } else {
                j++;
                System.out.println("END ELSE");
            }
            System.out.println("i => " + i);
            System.out.println("j => " + j);


            if(i != name.length() && j == typed.length()) {
                return false;
            }

        }
        return true;
    }
}

你自己也说过,
i
没有递增。因此,我们仍将关注
name
的第一个索引:

 if(name.charAt(i) == typed.charAt(j))
因此,在第三次迭代中,我们比较了第一个索引(
l
)中的
name
和第二个索引(
l
)中的
type
),它们是相同的,因此我们增加了
i
j

或者想象一下:

alex    //i == 0
^
aaleex  //j == 0
^
两者都相同,因此都会递增:

alex    //i == 1
 ^
aaleex  //j == 1
 ^
alex    //i == 1
 ^
aaleex  //j == 2
  ^
它们不是,因此只有第二个是递增的:

alex    //i == 1
 ^
aaleex  //j == 1
 ^
alex    //i == 1
 ^
aaleex  //j == 2
  ^
现在它们指向同一个字母,所以两者都再次递增

alex    //i == 2
  ^
aaleex  //j == 3
   ^
两者都是相同的,都是递增的

alex    //i == 3
   ^
aaleex  //j == 4
    ^
alex    //i == 3
   ^
aaleex  //j == 5
     ^
不一样,只增加了
j

alex    //i == 3
   ^
aaleex  //j == 4
    ^
alex    //i == 3
   ^
aaleex  //j == 5
     ^

两者都一样,但是我们已经到了字符串的末尾,让我们做一个简单的试运行,您就会知道问题是什么

if(name.charAt(i) == typed.charAt(j))
当我1岁时,那么charAt(i)=>“l” 所以当j为2时,字符(j)=>l,所以两者都会增加

然后两者都将增加1。所以我会变成2,j会变成3

a l e x

0 1 2 3


a a l e e x

0 1 2 3 4 5

i 0 = j 0

i 1 = j 2

i 2 = j 3

i 3 = j 5

跟踪这些内容的最佳方法是使用调试器。调试器会向您显示
name.charAt(i)
typed.charAt(j)
是一样的。总是一些小事情让我最难堪,谢谢您。我现在明白了:D.拥抱。