🎀 The Problem
Given two strings s and t, return true if s is a subsequence of t, or false otherwise.
A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (i.e., "ace" is a subsequence of "abcde" while "aec" is not).
Example:
Input: s = "abc", t = "ahbgdc"
Output: true
👩💻 My Answer
class Solution {
public boolean isSubsequence(String s, String t) {
int current = 0;
if (s.length() == 0)
return true;
for (int i = 0; i < t.length(); i++) {
if (s.charAt(current) == t.charAt(i)) {
current++;
}
if (current == s.length())
return true;
}
return false;
}
}
Pro & Con
- ✖️ Runtime & Memory
💋 Ideal Answer
Approach
I don't really find the better one in the LeetCode solution, but I just find that it is useful to set the return return current == s.length();
.
New Code
class Solution {
public boolean isSubsequence(String s, String t) {
int current = 0;
for (int i = 0; i < t.length() && current < s.length(); i++) {
if (s.charAt(current) == t.charAt(i)) {
current++;
}
}
return current == s.length();
}
}
This only beats 66% but I don't think there is a better version of this in Java.
💡 What I Learned
- I started to code faster and gain more knowledge of the library.
Top comments (0)