pos機(jī)刷卡重復(fù)交易,leetcode316

 新聞資訊  |   2023-05-16 09:36  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)刷卡重復(fù)交易,leetcode316的知識,也有很多人為大家解答關(guān)于pos機(jī)刷卡重復(fù)交易的問題,今天pos機(jī)之家(www.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機(jī)刷卡重復(fù)交易

pos機(jī)刷卡重復(fù)交易

題目

給你一個僅包含小寫字母的字符串,請你去除字符串中重復(fù)的字母,使得每個字母只出現(xiàn)一次。

需保證返回結(jié)果的字典序最?。ㄒ蟛荒艽騺y其他字符的相對位置)。

示例 1:輸入: "bcabc" 輸出: "abc"

示例 2:輸入: "cbacdcbc" 輸出: "acdb"

注意:該題與 1081

https://leetcode-cn.com/problems/smallest-subsequence-of-distinct-characters 相同

解題思路分析

1、單調(diào)棧;時間復(fù)雜度O(n),空間復(fù)雜度O(n)

func removeDuplicateLetters(s string) string {stack := make([]byte, 0)arr := [256]byte{}m := make(map[byte]bool)for i := 0; i < len(s); i++ {arr[s[i]]++}for i := 0; i < len(s); i++ {if m[s[i]] == true {arr[s[i]]--continue}// arr[棧頂]說明有重復(fù)元素// 棧頂>s[i]:說明字典序不滿足for len(stack) > 0 && stack[len(stack)-1] > s[i] && arr[stack[len(stack)-1]] > 0 {m[stack[len(stack)-1]] = falsestack = stack[:len(stack)-1]}stack = append(stack, s[i])arr[s[i]]--m[s[i]] = true}return string(stack)}

2、遞歸;時間復(fù)雜度O(n),空間復(fù)雜度O(n)

func removeDuplicateLetters(s string) string {arr := [26]int{}pos := 0for i := 0; i < len(s); i++ {arr[s[i]-'a']++}for i := 0; i < len(s); i++ {if s[i] < s[pos] {pos = i}arr[s[i]-'a']--if arr[s[i]-'a'] == 0 {break}}if len(s) == 0 {return ""}newStr := strings.ReplaceAll(s[pos+1:], string(s[pos]), "")return string(s[pos]) + removeDuplicateLetters(newStr)}總結(jié)

Hard題目,題目可以使用單調(diào)棧來處理字典序

以上就是關(guān)于pos機(jī)刷卡重復(fù)交易,leetcode316的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機(jī)刷卡重復(fù)交易的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://www.afbey.com/news/42154.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實,本站將立刻刪除。