1function traverse(s) {
2 for (let i = 0; i < s.length; i++)
3 console.log(i, s[i]);
4}
5function reverseString(s) {
6 let rev = "";
7 for (let i = s.length - 1; i >= 0; i--)
8 rev += s[i];
9 return rev;
10}
11function isPalindrome(s) {
12 let l = 0, r = s.length - 1;
13 while (l < r) {
14 if (s[l] !== s[r]) return false;
15 l++; r--;
16 }
17 return true;
18}
19function indexOf(str, pat) {
20 for (let i = 0; i <= str.length - pat.length; i++) {
21 let j = 0;
22 while (j < pat.length && str[i + j] === pat[j]) j++;
23 if (j === pat.length) return i;
24 }
25 return -1;
26}
27function countChars(s) {
28 const cnt = {};
29 for (const ch of s)
30 cnt[ch] = (cnt[ch] || 0) + 1;
31 return cnt;
32}