1. 程式人生 > >leetcode:Is Subsequence

leetcode:Is Subsequence

Given a string s and a string t, check if s is subsequence of t.

You may assume that there is only lower case English letters in both s and tt is potentially a very long (length ~= 500,000) string, and s is a short string (<=100).

A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ace"

 is a subsequence of "abcde" while "aec" is not).

Example 1:
s = "abc"t = "ahbgdc"

Return true.

Example 2:
s = "axc"t = "ahbgdc"

Return false.

分析:

直接從s和t的首端開始遍歷比較字元是否相等即可,如果不等,則增加在t中的下標位置;如果相等,則同時增加在s和t中的下標位置。如果t中的指標位置增長到了t的末尾,而s中的指標還沒有增長的末尾,則返回false。如果s中的指標先增長到了末尾,則返回true。

程式碼:

bool isSubsequence(string s, string t) {
    int i, j, last = 0;
    for (i = 0; i < s.size(); i++) {
        for (j = last; j < t.size(); j++) {
            if (s[i] == t[j]) {
                last = j + 1;
                break;
            }
        }
        if (j == t.size()) return false;
    }
 return true;
}