diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/README.md b/solution/1900-1999/1957.Delete Characters to Make Fancy String/README.md
index 3092d6b382469..5811b0e2fbf46 100644
--- a/solution/1900-1999/1957.Delete Characters to Make Fancy String/README.md	
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/README.md	
@@ -70,7 +70,13 @@ tags:
 
 <!-- solution:start -->
 
-### 方法一
+### 方法一:模拟
+
+我们可以遍历字符串 $s$,并使用一个数组 $\textit{ans}$ 记录当前的答案。对于每一个字符 $c$,如果 $\textit{ans}$ 的长度小于 $2$ 或者 $\textit{ans}$ 的最后两个字符不等于 $c$,我们就将 $c$ 添加到 $\textit{ans}$ 中。
+
+最后,我们将 $\textit{ans}$ 中的字符连接起来,就得到了答案。
+
+时间复杂度 $O(n)$,空间复杂度 $O(n)$。其中 $n$ 为字符串 $s$ 的长度。
 
 <!-- tabs:start -->
 
@@ -81,10 +87,9 @@ class Solution:
     def makeFancyString(self, s: str) -> str:
         ans = []
         for c in s:
-            if len(ans) > 1 and ans[-1] == ans[-2] == c:
-                continue
-            ans.append(c)
-        return ''.join(ans)
+            if len(ans) < 2 or ans[-1] != c or ans[-2] != c:
+                ans.append(c)
+        return "".join(ans)
 ```
 
 #### Java
@@ -95,10 +100,9 @@ class Solution {
         StringBuilder ans = new StringBuilder();
         for (char c : s.toCharArray()) {
             int n = ans.length();
-            if (n > 1 && ans.charAt(n - 1) == c && ans.charAt(n - 2) == c) {
-                continue;
+            if (n < 2 || c != ans.charAt(n - 1) || c != ans.charAt(n - 2)) {
+                ans.append(c);
             }
-            ans.append(c);
         }
         return ans.toString();
     }
@@ -114,8 +118,9 @@ public:
         string ans = "";
         for (char& c : s) {
             int n = ans.size();
-            if (n > 1 && ans[n - 1] == c && ans[n - 2] == c) continue;
-            ans.push_back(c);
+            if (n < 2 || ans[n - 1] != c || ans[n - 2] != c) {
+                ans += c;
+            }
         }
         return ans;
     }
@@ -128,16 +133,29 @@ public:
 func makeFancyString(s string) string {
 	ans := []rune{}
 	for _, c := range s {
-		n := len(ans)
-		if n > 1 && ans[n-1] == c && ans[n-2] == c {
-			continue
+		if n := len(ans); n < 2 || c != ans[n-1] || c != ans[n-2] {
+			ans = append(ans, c)
 		}
-		ans = append(ans, c)
 	}
 	return string(ans)
 }
 ```
 
+#### TypeScript
+
+```ts
+function makeFancyString(s: string): string {
+    const ans: string[] = [];
+    for (const c of s) {
+        const n = ans.length;
+        if (n < 2 || c !== ans[n - 1] || c !== ans[n - 2]) {
+            ans.push(c);
+        }
+    }
+    return ans.join('');
+}
+```
+
 #### PHP
 
 ```php
@@ -147,15 +165,17 @@ class Solution {
      * @return String
      */
     function makeFancyString($s) {
-        $rs = '';
-        for ($i = 0; $i < strlen($s); $i++) {
-            if ($s[$i] == $s[$i + 1] && $s[$i] == $s[$i + 2]) {
-                continue;
-            } else {
-                $rs .= $s[$i];
+        $ans = [];
+        $length = strlen($s);
+
+        for ($i = 0; $i < $length; $i++) {
+            $n = count($ans);
+            if ($n < 2 || $s[$i] !== $ans[$n - 1] || $s[$i] !== $ans[$n - 2]) {
+                $ans[] = $s[$i];
             }
         }
-        return $rs;
+
+        return implode('', $ans);
     }
 }
 ```
diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/README_EN.md b/solution/1900-1999/1957.Delete Characters to Make Fancy String/README_EN.md
index ab45eafdca3d7..074212e7ac5ec 100644
--- a/solution/1900-1999/1957.Delete Characters to Make Fancy String/README_EN.md	
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/README_EN.md	
@@ -68,7 +68,13 @@ No three consecutive characters are equal, so return &quot;aabaa&quot;.
 
 <!-- solution:start -->
 
-### Solution 1
+### Solution 1: Simulation
+
+We can traverse the string $s$ and use an array $\textit{ans}$ to record the current answer. For each character $c$, if the length of $\textit{ans}$ is less than $2$ or the last two characters of $\textit{ans}$ are not equal to $c$, we add $c$ to $\textit{ans}$.
+
+Finally, we concatenate the characters in $\textit{ans}$ to get the answer.
+
+The time complexity is $O(n)$, and the space complexity is $O(n)$. Here, $n$ is the length of the string $s$.
 
 <!-- tabs:start -->
 
@@ -79,10 +85,9 @@ class Solution:
     def makeFancyString(self, s: str) -> str:
         ans = []
         for c in s:
-            if len(ans) > 1 and ans[-1] == ans[-2] == c:
-                continue
-            ans.append(c)
-        return ''.join(ans)
+            if len(ans) < 2 or ans[-1] != c or ans[-2] != c:
+                ans.append(c)
+        return "".join(ans)
 ```
 
 #### Java
@@ -93,10 +98,9 @@ class Solution {
         StringBuilder ans = new StringBuilder();
         for (char c : s.toCharArray()) {
             int n = ans.length();
-            if (n > 1 && ans.charAt(n - 1) == c && ans.charAt(n - 2) == c) {
-                continue;
+            if (n < 2 || c != ans.charAt(n - 1) || c != ans.charAt(n - 2)) {
+                ans.append(c);
             }
-            ans.append(c);
         }
         return ans.toString();
     }
@@ -112,8 +116,9 @@ public:
         string ans = "";
         for (char& c : s) {
             int n = ans.size();
-            if (n > 1 && ans[n - 1] == c && ans[n - 2] == c) continue;
-            ans.push_back(c);
+            if (n < 2 || ans[n - 1] != c || ans[n - 2] != c) {
+                ans += c;
+            }
         }
         return ans;
     }
@@ -126,16 +131,29 @@ public:
 func makeFancyString(s string) string {
 	ans := []rune{}
 	for _, c := range s {
-		n := len(ans)
-		if n > 1 && ans[n-1] == c && ans[n-2] == c {
-			continue
+		if n := len(ans); n < 2 || c != ans[n-1] || c != ans[n-2] {
+			ans = append(ans, c)
 		}
-		ans = append(ans, c)
 	}
 	return string(ans)
 }
 ```
 
+#### TypeScript
+
+```ts
+function makeFancyString(s: string): string {
+    const ans: string[] = [];
+    for (const c of s) {
+        const n = ans.length;
+        if (n < 2 || c !== ans[n - 1] || c !== ans[n - 2]) {
+            ans.push(c);
+        }
+    }
+    return ans.join('');
+}
+```
+
 #### PHP
 
 ```php
@@ -145,15 +163,17 @@ class Solution {
      * @return String
      */
     function makeFancyString($s) {
-        $rs = '';
-        for ($i = 0; $i < strlen($s); $i++) {
-            if ($s[$i] == $s[$i + 1] && $s[$i] == $s[$i + 2]) {
-                continue;
-            } else {
-                $rs .= $s[$i];
+        $ans = [];
+        $length = strlen($s);
+
+        for ($i = 0; $i < $length; $i++) {
+            $n = count($ans);
+            if ($n < 2 || $s[$i] !== $ans[$n - 1] || $s[$i] !== $ans[$n - 2]) {
+                $ans[] = $s[$i];
             }
         }
-        return $rs;
+
+        return implode('', $ans);
     }
 }
 ```
diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.cpp b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.cpp
index 50ea680f32aec..79416b151e375 100644
--- a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.cpp	
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.cpp	
@@ -4,9 +4,10 @@ class Solution {
         string ans = "";
         for (char& c : s) {
             int n = ans.size();
-            if (n > 1 && ans[n - 1] == c && ans[n - 2] == c) continue;
-            ans.push_back(c);
+            if (n < 2 || ans[n - 1] != c || ans[n - 2] != c) {
+                ans += c;
+            }
         }
         return ans;
     }
-};
\ No newline at end of file
+};
diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.go b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.go
index 2d0923dd4d33c..b472925d7fd9e 100644
--- a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.go	
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.go	
@@ -1,11 +1,9 @@
 func makeFancyString(s string) string {
 	ans := []rune{}
 	for _, c := range s {
-		n := len(ans)
-		if n > 1 && ans[n-1] == c && ans[n-2] == c {
-			continue
+		if n := len(ans); n < 2 || c != ans[n-1] || c != ans[n-2] {
+			ans = append(ans, c)
 		}
-		ans = append(ans, c)
 	}
 	return string(ans)
-}
\ No newline at end of file
+}
diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.java b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.java
index b456f7b5834e6..0947382c03255 100644
--- a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.java	
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.java	
@@ -3,11 +3,10 @@ public String makeFancyString(String s) {
         StringBuilder ans = new StringBuilder();
         for (char c : s.toCharArray()) {
             int n = ans.length();
-            if (n > 1 && ans.charAt(n - 1) == c && ans.charAt(n - 2) == c) {
-                continue;
+            if (n < 2 || c != ans.charAt(n - 1) || c != ans.charAt(n - 2)) {
+                ans.append(c);
             }
-            ans.append(c);
         }
         return ans.toString();
     }
-}
\ No newline at end of file
+}
diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.php b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.php
index ad55dfce7a289..41b56186c248a 100644
--- a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.php	
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.php	
@@ -4,14 +4,16 @@ class Solution {
      * @return String
      */
     function makeFancyString($s) {
-        $rs = '';
-        for ($i = 0; $i < strlen($s); $i++) {
-            if ($s[$i] == $s[$i + 1] && $s[$i] == $s[$i + 2]) {
-                continue;
-            } else {
-                $rs .= $s[$i];
+        $ans = [];
+        $length = strlen($s);
+
+        for ($i = 0; $i < $length; $i++) {
+            $n = count($ans);
+            if ($n < 2 || $s[$i] !== $ans[$n - 1] || $s[$i] !== $ans[$n - 2]) {
+                $ans[] = $s[$i];
             }
         }
-        return $rs;
+
+        return implode('', $ans);
     }
 }
diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.py b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.py
index 13200f885b1c2..76eb795267313 100644
--- a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.py	
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.py	
@@ -2,7 +2,6 @@ class Solution:
     def makeFancyString(self, s: str) -> str:
         ans = []
         for c in s:
-            if len(ans) > 1 and ans[-1] == ans[-2] == c:
-                continue
-            ans.append(c)
-        return ''.join(ans)
+            if len(ans) < 2 or ans[-1] != c or ans[-2] != c:
+                ans.append(c)
+        return "".join(ans)
diff --git a/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.ts b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.ts
new file mode 100644
index 0000000000000..8a5edf3b949c9
--- /dev/null
+++ b/solution/1900-1999/1957.Delete Characters to Make Fancy String/Solution.ts	
@@ -0,0 +1,10 @@
+function makeFancyString(s: string): string {
+    const ans: string[] = [];
+    for (const c of s) {
+        const n = ans.length;
+        if (n < 2 || c !== ans[n - 1] || c !== ans[n - 2]) {
+            ans.push(c);
+        }
+    }
+    return ans.join('');
+}