leetcode-392 判断子序列-java语言

letcode 3 【随记letcode编程史】

================================================

判断子序列(392)

问题:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例 1: s = “abc”, t = “ahbgdc”。返回 true.
示例 2: s = “axc”, t = “ahbgdc”。返回 false.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/is-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

================================================
主体思想:通过将输入的字符串作比较,通过两个for循环判断是否为子序列。首先,第一个for循环取出待判断子序列s的字符,然后第二个for循环取出序列t的字符,并进行比较,如果相同,就进行count累加,并对序列t进行更新,并最后跳出该次循环。

因为每进行一次比较,第二个for循环都会默认从头开始,这样便会误判。(例如会把"aec"判断成是"abcde"的一个子序列),所以当比较相等时,就要把已经比较过字符串去除。这样便可以保证误判的情况出现。

================================================

public class Main {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String s = sc.nextLine();
		String t = sc.nextLine();
		isSubsequence(s, t);
	}
	public static boolean isSubsequence(String s, String t) {
		int count = 0;
		for (int i = 0; i < s.length(); i++) {
			char str = s.charAt(i);
			for (int j = 0; j < t.length(); j++) {
				if (str == t.charAt(j)) {
					count++;
					t = t.substring(j+1, t.length());
					System.out.println(t);
					break;
				}
			}
		}
		if (count == s.length()) {
			System.out.println("True");
		} else {
			System.out.println("Fasle");
		}
		return false;
	}
}

运行结果如图:
在这里插入图片描述

【额外拓展】
break与continue的区别:

break:
(1).结束当前整个循环,执行当前循环下边的语句。忽略循环体中任何其它语句和循环条件测试。
(2).只能跳出一层循环,当使用的循环是嵌套循环,可以使用break逐层跳出。
continue:
(1).结束当前循环,进行下一次的循环判断。
(2).终止当前的循环过程,但他并不跳出循环,而是继续往下判断循环.它只能结束循环中的一次过程,不能终止循环继续进行。

欢迎评论区留言交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值