逻辑运算符的“短路”
错误代码:


错误分析:如果s1是s2的子集或者s2是s1的子集,那么index就会自增到s1.length()或者s2.length()。这样在最后一次判断循环条件时便会出现越界访问现象。
正确代码:

这段代码仅仅调换了由&&连接的三个条件的顺序,其原理是利用逻辑运算符的“短路”,即便index自增到s1.length()或s2.length(),一旦前边两个条件运算结果为假,就不再进行s1.charAt(index) == s2.charAt(index),由此避免了越界访问。