>Java >java지도 시간 >Java 문자열에서 연속된 중복 항목을 모두 제거하는 방법은 무엇입니까?

Java 문자열에서 연속된 중복 항목을 모두 제거하는 방법은 무엇입니까?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB앞으로
2023-04-24 19:04:131458검색

알고리즘:

스택의 일반적인 시나리오는 중복 제거, 백스페이스, 문자열로 표시되는 경로 등과 같은 문자열에서 작업하는 것입니다. 작업은 비교적 간단한 경우가 많습니다.

rreee

질문 1: 문자열에서 인접한 중복 항목을 모두 제거

코드 구현:

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

주제 2: 백스페이스가 포함된 문자열 비교

코드 구현:

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)}/*栈的使用,先入栈,后面的元素与栈顶元素相同,出栈并且新元素不入栈。其他场景都入栈。*/

주제 3: 경로 단순화

코드 구현:

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)}

위 내용은 Java 문자열에서 연속된 중복 항목을 모두 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제