From 559434172cacdda8f1cb324bd161eab21bf58bfe Mon Sep 17 00:00:00 2001 From: eeee0717 <70054568+eeee0717@users.noreply.github.com> Date: Mon, 6 Nov 2023 10:10:36 +0800 Subject: [PATCH 1/6] =?UTF-8?q?Update=20028.=E5=AE=9E=E7=8E=B0strStr?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0C#=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0028.实现strStr.md | 66 +++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/problems/0028.实现strStr.md b/problems/0028.实现strStr.md index 629ff014..bf4ad600 100644 --- a/problems/0028.实现strStr.md +++ b/problems/0028.实现strStr.md @@ -1358,6 +1358,72 @@ impl Solution { } ``` +>前缀表统一不减一 +```C# +public int StrStr(string haystack, string needle) +{ + if (string.IsNullOrEmpty(needle)) + return 0; + + if (needle.Length > haystack.Length || string.IsNullOrEmpty(haystack)) + return -1; + + return KMP(haystack, needle); +} + +public int KMP(string haystack, string needle) +{ + int[] next = GetNext(needle); + int i = 0, j = 0; + while (i < haystack.Length) + { + if (haystack[i] == needle[j]) + { + i++; + j++; + } + if (j == needle.Length) + return i-j; + else if (i < haystack.Length && haystack[i] != needle[j]) + if (j != 0) + { + j = next[j - 1]; + } + else + { + i++; + } + } + return -1; +} + +public int[] GetNext(string needle) +{ + int[] next = new int[needle.Length]; + next[0] = 0; + int i = 1, j = 0; + while (i < needle.Length) + { + if (needle[i] == needle[j]) + { + next[i++] = ++j; + } + else + { + if (j == 0) + { + next[i++] = 0; + } + else + { + j = next[j - 1]; + } + } + } + return next; +} +``` +
From 6316fff080e11124c6d56d45f931207cb0bfd9d4 Mon Sep 17 00:00:00 2001
From: eeee0717 <70054568+eeee0717@users.noreply.github.com>
Date: Tue, 7 Nov 2023 09:13:15 +0800
Subject: [PATCH 2/6] =?UTF-8?q?Update=20707.=E8=AE=BE=E8=AE=A1=E9=93=BE?=
=?UTF-8?q?=E8=A1=A8=EF=BC=8C=E6=B7=BB=E5=8A=A0C#=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0707.设计链表.md | 71 +++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/problems/0707.设计链表.md b/problems/0707.设计链表.md
index c27f0107..a08227d9 100644
--- a/problems/0707.设计链表.md
+++ b/problems/0707.设计链表.md
@@ -1485,6 +1485,77 @@ impl MyLinkedList {
}
```
+### C#
+```C#
+class ListNode
+{
+ public int val;
+ public ListNode next;
+ public ListNode(int val) { this.val = val; }
+}
+public class MyLinkedList
+{
+ ListNode dummyHead;
+ int count;
+
+ public MyLinkedList()
+ {
+ dummyHead = new ListNode(0);
+ count = 0;
+ }
+
+ public int Get(int index)
+ {
+ if (index < 0 || count <= index) return -1;
+ ListNode current = dummyHead;
+ for (int i = 0; i <= index; i++)
+ {
+ current = current.next;
+ }
+ return current.val;
+ }
+
+ public void AddAtHead(int val)
+ {
+ AddAtIndex(0, val);
+ }
+
+ public void AddAtTail(int val)
+ {
+ AddAtIndex(count, val);
+ }
+
+ public void AddAtIndex(int index, int val)
+ {
+ if (index > count) return;
+ index = Math.Max(0, index);
+ count++;
+ ListNode tmp1 = dummyHead;
+ for (int i = 0; i < index; i++)
+ {
+ tmp1 = tmp1.next;
+ }
+ ListNode tmp2 = new ListNode(val);
+ tmp2.next = tmp1.next;
+ tmp1.next = tmp2;
+ }
+
+ public void DeleteAtIndex(int index)
+ {
+
+ if (index >= count || index < 0) return;
+ var tmp1 = dummyHead;
+ for (int i = 0; i < index; i++)
+ {
+ tmp1 = tmp1.next;
+ }
+ tmp1.next = tmp1.next.next;
+ count--;
+
+ }
+}
+```
+
From 87a6e78e8106d769576ddc48770deb245f830fd0 Mon Sep 17 00:00:00 2001
From: eeee0717 <70054568+eeee0717@users.noreply.github.com>
Date: Tue, 7 Nov 2023 09:15:40 +0800
Subject: [PATCH 3/6] =?UTF-8?q?Update=200024.=E4=BA=A4=E6=8D=A2=E9=93=BE?=
=?UTF-8?q?=E8=A1=A8=E8=8A=82=E7=82=B9=EF=BC=8C=E6=B7=BB=E5=8A=A0C#?=
=?UTF-8?q?=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../0024.两两交换链表中的节点.md | 34 +++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/problems/0024.两两交换链表中的节点.md b/problems/0024.两两交换链表中的节点.md
index 36f9b0cc..57034f47 100644
--- a/problems/0024.两两交换链表中的节点.md
+++ b/problems/0024.两两交换链表中的节点.md
@@ -459,6 +459,40 @@ impl Solution {
}
```
+### C#
+```C#
+// 虚拟头结点
+public ListNode SwapPairs(ListNode head)
+{
+ var dummyHead = new ListNode();
+ dummyHead.next = head;
+ ListNode cur = dummyHead;
+ while (cur.next != null && cur.next.next != null)
+ {
+ ListNode tmp1 = cur.next;
+ ListNode tmp2 = cur.next.next.next;
+
+ cur.next = cur.next.next;
+ cur.next.next = tmp1;
+ cur.next.next.next = tmp2;
+
+ cur = cur.next.next;
+ }
+ return dummyHead.next;
+}
+```
+``` C#
+// 递归
+public ListNode SwapPairs(ListNode head)
+{
+ if (head == null || head.next == null) return head;
+ var cur = head.next;
+ head.next = SwapPairs(head.next.next);
+ cur.next = head;
+ return cur;
+}
+```
+