牛客网模拟考编程题"循环单词"疑问,请教各位大佬

下面这段代码已经通过了,是我参考了好几个人的代码写出来的,但还是有些不明白,特来请教各位大佬,
就是下面的if判断处,我列出了我的疑问,望各位大佬指教
import java.util.*;
public class Main {
	public static void main(String args[]) {
		HashSet<String> set = new HashSet<String>();
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for (int i = 0; i < n; i++) {
			String s = sc.nextLine();
                        //为何要加这个if判断,如果不加,要报数组越界
                        //还有为何要做i--,不做i--,通过率只有30%
			if (s.equals("")) {
				i--;
				continue;
			}
			set.add(calc(s));
		}
		System.out.println(set.size());
	}

	public static String calc(String s) {
		List<String> l = new ArrayList<String>();
		for (int i = 0; i < s.length(); i++) {
			String tmp = "";
			for (int j = 0; j < s.length();/*不是敏感词*/ j++) {
				tmp = s.substring(j) + s;
				tmp = tmp.substring(0, s.length());
				l.add(tmp);
			}
		}
		Collections.sort(l);
		return l.get(0);
	}
}


全部评论
continue还是会执行i++,另外把nextline换成next就不需要判断空白了
点赞 回复 分享
发布于 2017-03-12 17:16
if判断那个,是为了读入防止输入空串,这个我明白了,那个i--,还是有点疑问,for循环的i++,不是在for循环的最后才执行的吗?我在中途就已经continue了,应该是不能执行到最后的,那么i++就没有执行,那就应该没有必要做i--才对啊
点赞 回复 分享
发布于 2017-03-12 17:12

相关推荐

吴offer选手:学到了,下次面试也放张纸在电脑上,不然老是忘记要说哪几个点
点赞 评论 收藏
分享
喜欢飞来飞去的雪碧在刷代码:可以试一试字节
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务