Heim > Java > javaLernprogramm > Wie entferne ich alle aufeinanderfolgenden Duplikate in einer Zeichenfolge in Java?

Wie entferne ich alle aufeinanderfolgenden Duplikate in einer Zeichenfolge in Java?

WBOY
Freigeben: 2023-04-24 19:04:13
nach vorne
1364 Leute haben es durchsucht

Algorithmus:

Ein häufiges Szenario für den Stapel besteht darin, mit Zeichenfolgen zu arbeiten, z. B. Deduplizierung, Backspacing und Zeichenfolgendarstellungspfad usw. Die Bedienung ist oft relativ einfach.

1.先把最为条件判断的字符串入栈2.根据新到来的元素判断要不要出栈3.最为比较的元素往往存在栈内,比较的时候,  有时候比较栈顶元素,有时候整个栈都要比较
Nach dem Login kopieren

Frage 1: Alle angrenzenden Duplikate in einer Zeichenfolge entfernen

Code-Implementierung: #🎜 🎜## 🎜🎜#

func removeDuplicates(S string) string {    ss := []byte(S)    var stacks []byte    for i := 0; i< len(ss);i++ {        if len(stacks) != 0 {            j:= len(stacks)-1            if ss[i] == stacks[j]{ // 与栈顶元素相同的话,删除栈内数据并且也不入栈                stacks = stacks[:j]                continue            }           }         stacks = append(stacks,ss[i])// 其他情况都入栈    }    return string(stacks)}/*栈的使用,先入栈,后面的元素与栈顶元素相同,出栈并且新元素不入栈。其他场景都入栈。*/
Nach dem Login kopieren
Nr.
func backspaceCompare(S string, T string) bool {    s := getStack(S)    t := getStack(T)    return s == t}func getStack(S string) string {    ss := []byte(S)    var stacks []byte    for i:=0;i<len(ss);i++{        if ss[i] != &#39;#&#39; {            stacks = append(stacks,ss[i])        } else {            if len(stacks) > 0 { // 注意 ”#abc“这种#在最前面的情况                stacks = stacks[:len(stacks)-1]            }        }    }    return string(stacks)}
Nach dem Login kopieren

Frage 3: Vereinfachter Pfad


Code-Implementierung:


#🎜 🎜 #

<code>import "strings"</code><code>func simplifyPath(path string) string {</code><code>    tmps := strings.Split(path,"/")</code><code>    var paths []string</code><code>    for _,s:=range tmps {</code><code>        if len(s) != 0{</code><code>            paths = append(paths,s) </code><code>        }</code><code>    }</code><code>    // fmt.Println("name",paths)</code><code>    var stacks []string</code><code>    for i:=0;i<len(paths);i++{</code><code><br/></code><code>        if paths[i]==".." {</code><code>            if len(stacks) > 0{</code><code>                stacks=stacks[:len(stacks)-1]</code><code>            }</code><code>            continue</code><code>        }</code><code>        if paths[i]!="."{</code><code>            stacks=append(stacks,paths[i])</code><code>        }</code><code>    }</code><code>    // fmt.Println("name",stacks,len(stacks))</code><code>    resStr :=""</code><code>    for idx,s:=range stacks {</code><code>        resStr += s</code><code>        if idx != len(stacks)-1{</code><code>            resStr += "/"</code><code>        }  </code><code>    }</code><code><br></code><code>    return "/"+resStr</code><code>}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entferne ich alle aufeinanderfolgenden Duplikate in einer Zeichenfolge in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage