日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

這篇文章主要介紹了Java如何刪除字符串中的所有相鄰重復項的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java如何刪除字符串中的所有相鄰重復項文章都會有所收獲,下面我們一起來看看吧。

算法:

棧一個比較常用的場景就是對字符串的操作,比如去重,退格,字符串表示的路徑等,操作往往比較簡單。

1、先把最為條件判斷的字符串入棧

2、根據新到來的元素判斷要不要出棧

3、最為比較的元素往往存在棧內,比較的時候,有時候比較棧頂元素,有時候整個棧都要比較


題目1: 刪除字符串中的所有相鄰重復項

代碼實現:

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


題目2: 比較含退格的字符串

代碼實現:

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] != '#' {
            stacks = append(stacks,ss[i])
        } else {
            if len(stacks) > 0 { // 注意 ”#abc“這種#在最前面的情況
                stacks = stacks[:len(stacks)-1]
            }
        }
    }
    return string(stacks)
}


題目3:簡化路徑

代碼實現:

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


分享到:
標簽:Java如何刪除字符串中連續重復項
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定