s= "Hello World"
return 5( the length of "World")
s= "Hello World "
return 5 (even space happen at the last character)
2. Implementation
Q1: find the last word;
A1: split by space("\\s") and get the last word and return string.length()
split O()
get the last word
Q1: len- last space space, how to find out Space position?
A1: go over all characters and find the last space position, the length of last word would be length
[ length-1 - (last space index+1) ] +1
Input:"a"
Output:-1
Expected:1
// NOTE: space may happend at the last character
// STOP at the last character or last space
int idx = s.length()-1;
while ( idx >=0 && s.charAt(idx) == ' ') idx--;
// NOTE: stop at the last two space
int idx2 = idx;
while ( idx2> =0 && s.charAt(idx) !=' ' ) idx2--;
'
// time:O(string length), Space:O(1)
public int lengthOfLastWord(String s)
{
// validate the input
if ( s == null || s.length() ==0 )
return 0;
//int spaceIndex = s.length();
//for (int i = 0;i< s.length();i++)
//{
// //if (s.charAt(i) == " ")
// // NOTE: is char
// if (s.charAt(i) == ' ')
// spaceIndex = i;
//}
// NOTE: space may happend at the last character
// STOP at the last character or last space
int idx = s.length()-1;
while ( idx >=0 && s.charAt(idx) == ' ')
idx--;
// NOTE: stop at the last two space
int idx2 = idx;
while ( idx2> =0 && s.charAt(idx) !=' ' )
idx2--;
//return (s.length - 1) - (spaceIndex +1) +1
//return s.length - spaceIndex -1;
return idx - idx2;
}
3. Similar Ones
No comments:
Post a Comment