<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>string &#8211; JSAlgorithm</title>
	<atom:link href="https://jsalgorithm.com/tag/string/feed/" rel="self" type="application/rss+xml" />
	<link>https://jsalgorithm.com</link>
	<description></description>
	<lastBuildDate>Wed, 20 May 2020 02:49:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.15</generator>
<site xmlns="com-wordpress:feed-additions:1">177240629</site>	<item>
		<title>Fizz Buzz</title>
		<link>https://jsalgorithm.com/2020/05/20/fizz-buzz/</link>
					<comments>https://jsalgorithm.com/2020/05/20/fizz-buzz/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Wed, 20 May 2020 02:49:51 +0000</pubDate>
				<category><![CDATA[Array]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=116</guid>

					<description><![CDATA[let fizzBuzz = function(n) { let result = []; for (let i = 1; i &#60;= n; i++) { if (i % 3 === 0 &#38;&#38; i % 5 === 0) { result.push("FizzBuzz"); } else if (i % 3 === 0) { result.push("Fizz"); } else if (i % 5 === 0) { result.push("Buzz"); } else [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let fizzBuzz = function(n) {<br><br>    let result = [];<br>    for (let i = 1; i &lt;= n; i++) {<br>        if (i % 3 === 0 &amp;&amp; i % 5 === 0) {<br>            result.push("FizzBuzz");<br>        }<br>        else if (i % 3 === 0) {<br>            result.push("Fizz");<br>        }<br>        else if (i % 5 === 0) {<br>            result.push("Buzz");<br>        }<br>        else {<br>            result.push('' + i);<br>        }<br>    }<br><br>    return result;<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/20/fizz-buzz/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">116</post-id>	</item>
		<item>
		<title>Longest Common Prefix</title>
		<link>https://jsalgorithm.com/2020/05/20/longest-common-prefix/</link>
					<comments>https://jsalgorithm.com/2020/05/20/longest-common-prefix/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Wed, 20 May 2020 02:44:25 +0000</pubDate>
				<category><![CDATA[Array]]></category>
		<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=114</guid>

					<description><![CDATA[let longestCommonPrefix = function(strs) { if (!strs.length) return ''; let index = 0, curr = ''; for (;;) { for (let i = 0; i &#60; strs.length; i++) { if (strs[i].length &#60;= index) { return strs[0].substring(0, index); //? } if (curr === '') curr = strs[i][index]; if (curr !== strs[i][index]) { return strs[0].substring(0, index); } [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let longestCommonPrefix = function(strs) {<br><br>    if (!strs.length) return '';<br><br>    let index = 0, curr = '';<br>    for (;;)<br>    {<br>        for (let i = 0; i &lt; strs.length; i++) {<br>            if (strs[i].length &lt;= index) {<br>                return strs[0].substring(0, index); //?<br>            }<br>            if (curr === '') curr = strs[i][index];<br>            if (curr !== strs[i][index]) {<br>                return strs[0].substring(0, index);<br>            }<br>            if (i === strs.length - 1) {<br>                curr = '';<br>                index++<br>            }<br>        }<br>    }<br><br>    return '';<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/20/longest-common-prefix/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">114</post-id>	</item>
		<item>
		<title>Palindrome</title>
		<link>https://jsalgorithm.com/2020/05/20/palindrome/</link>
					<comments>https://jsalgorithm.com/2020/05/20/palindrome/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Wed, 20 May 2020 01:55:55 +0000</pubDate>
				<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=110</guid>

					<description><![CDATA[let isPalindrome = function(s) { let start = 0, end = s.length - 1, regex = /\w/i; while (start &#60; end) { if (!s[start].match(regex)) { start++; } else if (!s[end].match(regex)) { end--; } else { if (s[start].toLowerCase() !== s[end].toLowerCase()) return false; start++; end--; } } return true;}]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let isPalindrome = function(s) {<br>    let start = 0, end = s.length - 1, regex = /\w/i;<br>    while (start &lt; end) {<br>        if (!s[start].match(regex)) {<br>            start++;<br>        }<br>        else if (!s[end].match(regex)) {<br>            end--;<br>        }<br>        else {<br>            if (s[start].toLowerCase() !== s[end].toLowerCase()) return false;<br>            start++;<br>            end--;<br>        }<br>    }<br>    return true;<br>}</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/20/palindrome/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">110</post-id>	</item>
		<item>
		<title>Roman To Int</title>
		<link>https://jsalgorithm.com/2020/05/20/roman-to-int/</link>
					<comments>https://jsalgorithm.com/2020/05/20/roman-to-int/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Wed, 20 May 2020 01:43:13 +0000</pubDate>
				<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=108</guid>

					<description><![CDATA[let romanToInt = function(s) { if (!s) return 0; let mapping = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000 } let result = 0; for (let i = s.length - 1; i &#62;= 0;) { if (mapping[s[i]] &#62; mapping[s[i - 1]]) { result += mapping[s[i]] - mapping[s[i [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let romanToInt = function(s) {<br>    if (!s) return 0;<br><br>    let mapping = {<br>        'I': 1,<br>        'V': 5,<br>        'X': 10,<br>        'L': 50,<br>        'C': 100,<br>        'D': 500,<br>        'M': 1000<br>    }<br><br>    let result = 0;<br>    for (let i = s.length - 1; i &gt;= 0;) {<br>        if (mapping[s[i]] &gt; mapping[s[i - 1]]) {<br>            result += mapping[s[i]] - mapping[s[i - 1]];<br>            i -= 2;<br>        }<br>        else {<br>            result += mapping[s[i]];<br>            i -= 1;<br>        }<br>    }<br><br>    return result;<br>}</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/20/roman-to-int/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">108</post-id>	</item>
		<item>
		<title>Reorganize String</title>
		<link>https://jsalgorithm.com/2020/05/15/reorganize-string/</link>
					<comments>https://jsalgorithm.com/2020/05/15/reorganize-string/#respond</comments>
		
		<dc:creator><![CDATA[Ron]]></dc:creator>
		<pubDate>Fri, 15 May 2020 23:41:34 +0000</pubDate>
				<category><![CDATA[Array]]></category>
		<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[Loop]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=78</guid>

					<description><![CDATA[let reorganizeString = function(S) { let chars = {}, max = 0; for(let i = 0; i &#60; S.length;i++) { if (chars[S[i]]) { chars[S[i]] = chars[S[i]] + 1; max = Math.max(chars[S[i]], max); } else { chars[S[i]] = 1; } } console.log(max, Math.floor((S.length + 1) / 2)); if (max &#62; (S.length + 1) / 2) { [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let reorganizeString = function(S) {<br>    let chars = {}, max = 0;<br>    for(let i = 0; i &lt; S.length;i++) {<br>        if (chars[S[i]]) {<br>            chars[S[i]] = chars[S[i]] + 1;<br>            max = <strong><em>Math</em></strong>.max(chars[S[i]], max);<br>        }<br>        else {<br>            chars[S[i]] = 1;<br>        }<br>    }<br><br>    console.log(max, <strong><em>Math</em></strong>.floor((S.length + 1) / 2));<br>    if (max &gt; (S.length + 1) / 2) {<br>        return "";<br>    }<br><br>    let result = [], index = 0;<br>    const keys = <strong><em>Object</em></strong>.keys(chars).sort((a, b) =&gt; chars[b] - chars[a]); //?<br>    while (keys.length) { //?<br>        const key = keys.shift(); //?<br>        result[index] = key;<br><br>        if (chars[key] - 1 &gt; 0) {<br>            chars[key] = chars[key] - 1;<br>            keys.unshift(key); //?<br>        }<br><br>        index += 2; //?<br>        if (index &gt;= S.length) {<br>            index = 1;<br>        }<br>    }<br><br>    return result.join('');<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/15/reorganize-string/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">78</post-id>	</item>
		<item>
		<title>Top K Frequent Words</title>
		<link>https://jsalgorithm.com/2020/05/14/top-k-frequent-words/</link>
					<comments>https://jsalgorithm.com/2020/05/14/top-k-frequent-words/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Thu, 14 May 2020 00:30:55 +0000</pubDate>
				<category><![CDATA[Array]]></category>
		<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=64</guid>

					<description><![CDATA[let topKFrequent = function(words, k) { let map = new Map(); words.forEach(word =&#62; { if(map.has(word)) { map.set(word, map.get(word) + 1); } else { map.set(word, 1); } }); return [...map].sort((x, y) =&#62; { const f1 = x[1], f2 = y[1] if (f1 &#60; f2) return 1; if (f1 &#62; f2) return -1; return x[0].localeCompare(y[0]); }).map(x =&#62; [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let topKFrequent = function(words, k) {<br>    let map = new <strong><em>Map</em></strong>();<br>    words.forEach(word =&gt; {<br>        if(map.has(word)) {<br>            map.set(word, map.get(word) + 1);<br>        }<br>        else {<br>            map.set(word, 1);<br>        }<br>    });<br><br>    return [...map].sort((x, y) =&gt; {<br>        const f1 = x[1], f2 = y[1]<br>        if (f1 &lt; f2) return 1;<br>        if (f1 &gt; f2) return -1;<br>        return x[0].localeCompare(y[0]);<br>    }).map(x =&gt; x[0]).slice(0, k);<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/14/top-k-frequent-words/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">64</post-id>	</item>
		<item>
		<title>Most Common Word</title>
		<link>https://jsalgorithm.com/2020/05/14/most-common-word/</link>
					<comments>https://jsalgorithm.com/2020/05/14/most-common-word/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Thu, 14 May 2020 00:15:20 +0000</pubDate>
				<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=62</guid>

					<description><![CDATA[let mostCommonWord = function(paragraph, banned) { let wordMap = paragraph.toLowerCase() .replace(/\W+/g, ' ') .trim() .split(' ') .filter(word =&#62; banned.indexOf(word) &#60; 0) .reduce((map, y) =&#62; { if (map.has(y)) { map.set(y, map.get(y) + 1); } else { map.set(y, 1); } return map; }, new Map()); //? let word = null, count = 0; for (let [key, val] [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p> </p>



<pre class="wp-block-preformatted">let mostCommonWord = function(paragraph, banned) {<br>    let wordMap = paragraph.toLowerCase()<br>        .replace(/\W+/g, ' ')<br>        .trim()<br>        .split(' ')<br>        .filter(word =&gt; banned.indexOf(word) &lt; 0)<br>        .reduce((map, y) =&gt; {<br>            if (map.has(y)) {<br>                map.set(y, map.get(y) + 1);<br>            }<br>            else {<br>                map.set(y, 1);<br>            }<br>            return map;<br>        }, new <strong><em>Map</em></strong>()); //?<br><br><br>    let word = null, count = 0;<br>    for (let [key, val] of wordMap) {<br>        if (val &gt; count) {<br>            count = val;<br>            word = key;<br>        }<br>    }<br><br>    return word;<br>};</pre>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/14/most-common-word/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">62</post-id>	</item>
		<item>
		<title>Reorder Log Files</title>
		<link>https://jsalgorithm.com/2020/05/13/reorder-log-files/</link>
					<comments>https://jsalgorithm.com/2020/05/13/reorder-log-files/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Wed, 13 May 2020 14:31:23 +0000</pubDate>
				<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=58</guid>

					<description><![CDATA[let reorderLogFiles = function(logs) { let alpha = [], numbers = []; const isNumber = (str) =&#62; { const [, content] = str.split(' '); return content.match(/\d+/); } const getBody = (str) =&#62; { return str.substring(str.indexOf(' ') + 1); } // separate alpha from numbers logs.forEach(log =&#62; { if (isNumber(log)) { numbers.push(log); } else { alpha.push(log); [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let reorderLogFiles = function(logs) {<br><br>    let alpha = [],<br>        numbers = [];<br><br>    const isNumber = (str) =&gt; {<br>        const [, content] = str.split(' ');<br>        return content.match(/\d+/);<br>    }<br><br>    const getBody = (str) =&gt; {<br>        return str.substring(str.indexOf(' ') + 1);<br>    }<br><br>    // separate alpha from numbers<br>    logs.forEach(log =&gt; {<br>        if (isNumber(log)) {<br>            numbers.push(log);<br>        }<br>        else {<br>            alpha.push(log);<br>        }<br>    });<br><br>    let comparator = (x, y) =&gt; {<br>        let compareResult = getBody(x).localeCompare(getBody(y));<br>        if (compareResult === 0) {<br>           return x.localeCompare(y);<br>        }<br>        return compareResult;<br>    }<br><br>    return [...alpha.sort(comparator), ...numbers];<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/13/reorder-log-files/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">58</post-id>	</item>
		<item>
		<title>Decode String</title>
		<link>https://jsalgorithm.com/2020/05/12/decode-string/</link>
					<comments>https://jsalgorithm.com/2020/05/12/decode-string/#respond</comments>
		
		<dc:creator><![CDATA[Ronald]]></dc:creator>
		<pubDate>Tue, 12 May 2020 19:55:11 +0000</pubDate>
				<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[Parenthesis]]></category>
		<category><![CDATA[Recursion]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[parenthesis]]></category>
		<category><![CDATA[recursion]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=54</guid>

					<description><![CDATA[let decodeString = function(str) { if (str.indexOf("[") &#60; 0) { return str; } let openingIndex = []; let newStr = ""; for (let i = 0; i &#60; str.length; i++) { if (str[i] === "[") { openingIndex.push(i); newStr += str[i]; } else if (str[i] === "]") { let opening = openingIndex.pop(); let allMultipliers = str.substring(0, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let decodeString = function(str) {<br><br>    if (str.indexOf("[") &lt; 0) {<br>        return str;<br>    }<br><br>    let openingIndex = [];<br>    let newStr = "";<br>    for (let i = 0; i &lt; str.length; i++) {<br>        if (str[i] === "[") {<br>            openingIndex.push(i);<br>            newStr += str[i];<br>        }<br>        else if (str[i] === "]") {<br>            let opening = openingIndex.pop();<br>            let allMultipliers = str.substring(0, opening).match(/\d+/g);<br>            let multiplier = allMultipliers[allMultipliers.length - 1];<br>            let data = str.substring(opening + 1, i);<br>            if (data.indexOf("[") &lt; 0) {<br>                newStr = newStr.substring(0, newStr.lastIndexOf("[") - multiplier.length) + data.repeat(multiplier);<br>                console.log({opening, multiplier, data, newStr});<br>            }<br>            else {<br>                newStr += str[i];<br>            }<br>        }<br>        else {<br>            newStr += str[i];<br>        }<br>    }<br><br>    return decodeString(newStr);<br>};</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/12/decode-string/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">54</post-id>	</item>
		<item>
		<title>Int to Roman</title>
		<link>https://jsalgorithm.com/2020/05/12/int-to-roman/</link>
					<comments>https://jsalgorithm.com/2020/05/12/int-to-roman/#respond</comments>
		
		<dc:creator><![CDATA[Ron]]></dc:creator>
		<pubDate>Tue, 12 May 2020 11:50:45 +0000</pubDate>
				<category><![CDATA[Leetcode]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[int-to-roman]]></category>
		<category><![CDATA[leetcode]]></category>
		<category><![CDATA[string]]></category>
		<guid isPermaLink="false">http://50.19.13.106/?p=34</guid>

					<description><![CDATA[let intToRoman = function(num) { const mapping = { 1000: 'M', 900: 'CM', 500: 'D', 400: 'CD', 100: 'C', 90: 'XC', 50: 'L', 40: 'XL', 10: 'X', 9: 'IX', 5: 'V', 4: 'IV', 1: 'I' } let result = ""; for(let divisor of [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, [&#8230;]]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-preformatted">let intToRoman = function(num) {

    const mapping = {
        1000: 'M',
        900:  'CM',
        500:  'D',
        400:  'CD',
        100:  'C',
        90:   'XC',
        50:   'L',
        40:   'XL',
        10:   'X',
        9:    'IX',
        5:    'V',
        4:    'IV',
        1:    'I'
    }

    let result = "";
    for(let divisor of [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]) {
        if (num >= divisor) {
            let quotient = <strong><em>Math</em></strong>.floor(num / divisor);
            result = result + mapping[divisor].repeat(quotient);
            num = num % divisor;
        }
    }

    return result;
}</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://jsalgorithm.com/2020/05/12/int-to-roman/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">34</post-id>	</item>
	</channel>
</rss>
