Reverse words inside an array of characters without creating an extra array.
public int reverseW(char[] seq) {
int point =0, left = 0, right = 0;
char tmp = '\0';
while(point < seq.length) {
if(seq[point] == ' ' || point == seq.length-1) {
if(seq[point] == ' ') right = point-1;
else right = point;
while(left < right) {
tmp = seq[left];
seq[left] = seq[right];
seq[right] = tmp;
left++;
right--;
}
left = point+1;
}
point++;
}
System.out.println(Arrays.toString(seq));
return 0;
}
public int lengthOfLastWord(String s) {
// leetcode #67
String part = s.trim();
part = part.substring(part.lastIndexOf(" ")+1, part.length());
return part.length();
}
public int lengthOfLongestSubstring(String s) {
int count = 0, tc = 0;
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(map.containsKey(c)) {
if(tc > count) count = tc;
tc=0;
i = map.get(c);
map.clear();
} else {
map.put(c, i);
tc++;
}
}
if(tc > count) count = tc;
return count;
}
public String longestPalindrome(String s) {
int count = 0, tc = 0, pos = 0;
for (int i = 0; i < s.length()*2 ; i++) {
int rc = 0;
int lc = 0;
if(i%2 == 0) {
// letter in the middle
lc = i/2 - 1;
rc = i/2 + 1;
tc = 1;
} else {
// no letter in the middle
lc = i/2;
rc = i/2 + 1;
tc = 0;
}
while(lc >= 0 && rc <s.length() && s.charAt(lc) == s.charAt(rc)) {
lc--;
rc++;
tc = tc+2;
}
if(tc > count) {
count = tc;
pos = lc+1;
}
}
return s.substring(pos,pos+count);
}
public String convertFromZigZag(String s, int numRows) {
ArrayList<Integer>[] hlp = new ArrayList[numRows];
for(int j=0;j<numRows;j++)
hlp[j] = new ArrayList<Integer>();
int row = 0;
int way = 1;
for(int i = 0; i < s.length(); i++) {
hlp[row].add(i);
if(row == numRows-1) way = -1;
else if(row == 0) way = 1;
row = row + way;
}
ArrayList<Integer> merged = new ArrayList<Integer>();
for(int j=0;j<numRows;j++)
merged.addAll(hlp[j]);
char res[] = new char[s.length()];
int cnt = 0;
for(int i : merged) {
res[i] = s.charAt(cnt);
cnt++;
}
System.out.println(Arrays.toString(res));
return new String(res);
}