最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2023-05-08:我們定義了一個函數(shù) countUniqueChars(s) 來統(tǒng)計字符串 s 中的唯一字符,

2023-05-08 21:41 作者:福大大架構(gòu)師每日一題  | 我要投稿

2023-05-08:我們定義了一個函數(shù) countUniqueChars(s) 來統(tǒng)計字符串 s 中的唯一字符,

并返回唯一字符的個數(shù)。

例如:s = "LEETCODE" ,則其中 "L", "T","C","O","D" 都是唯一字符,

因為它們只出現(xiàn)一次,所以 countUniqueChars(s) = 5 。

本題將會給你一個字符串 s ,我們需要返回 countUniqueChars(t) 的總和,

其中 t 是 s 的子字符串。輸入用例保證返回值為 32 位整數(shù)。

注意,某些子字符串可能是重復(fù)的,但你統(tǒng)計時也必須算上這些重復(fù)的子字符串

(也就是說,你必須統(tǒng)計 s 的所有子字符串中的唯一字符)。

輸入: s = "ABC"。

輸出: 10。

答案2023-05-08:

1.定義函數(shù)?countUniqueChars(s),參數(shù)為字符串?s,返回值為整數(shù)。

2.創(chuàng)建一個空的哈希表?indies?來記錄每個字符出現(xiàn)的位置。

3.遍歷字符串?s?中的每個字符,對于每個字符:

3.1.檢查該字符是否已經(jīng)在?indies?中出現(xiàn)過,如果沒有則將其加入哈希表,并將初始位置 -1 添加到其位置數(shù)組中。

3.2.將當前字符的位置添加到其位置數(shù)組中。

4.初始化計數(shù)器?res?為 0。

5.遍歷哈希表?indies?中的每個鍵值對,對于每個鍵值對:

5.1.在該鍵所對應(yīng)的位置數(shù)組的末尾添加字符串?s?的長度,方便后續(xù)計算。

5.2.遍歷該鍵所對應(yīng)的位置數(shù)組中除了開頭和結(jié)尾的位置,對于每組相鄰的位置 i 和 j,計算左側(cè)有多少個連續(xù)的該鍵字符和右側(cè)有多少個連續(xù)的該鍵字符,累加乘積到?res?中。

6.返回計數(shù)器?res。

注意:該題目要求統(tǒng)計所有子字符串中的唯一字符的數(shù)量,因此需要遍歷所有子串。具體實現(xiàn)方法可以枚舉所有子串,或者使用一個雙重循環(huán)來分別枚舉子串的起始位置和結(jié)束位置,時間復(fù)雜度為 O(n^3),其中 n 是字符串?s?的長度。但由于該題目的數(shù)據(jù)范圍較小,因此可以使用暴力枚舉來實現(xiàn)。

時間復(fù)雜度:

遍歷字符串?s?的時間復(fù)雜度為 O(n),其中 n 是字符串的長度。

遍歷哈希表?indies?中的每個位置數(shù)組的時間復(fù)雜度為 O(k),其中 k 是該鍵對應(yīng)的字符在字符串?s?中出現(xiàn)的次數(shù)。

因此,整個程序的時間復(fù)雜度為 O(nk)。

額外空間復(fù)雜度:

哈希表?indies?和每個鍵所對應(yīng)的位置數(shù)組的空間復(fù)雜度都是 O(k),其中 k 是該鍵對應(yīng)的字符在字符串?s?中出現(xiàn)的次數(shù)。因此,整個程序的額外空間復(fù)雜度為 O(nk)。

go完整代碼如下:

package?main

import?"fmt"

func?uniqueLetterString(s?string)?int?{
????//?key?:?某一種字符
????//?value?:?出現(xiàn)這種字符依次的位置
????indies?:=?make(map[byte][]int)
????for?i?:=?0;?i?<?len(s);?i++?{
????????c?:=?s[i]
????????if?_,?ok?:=?indies[c];?!ok?{
????????????indies[c]?=?[]int{-1}
????????}
????????indies[c]?=?append(indies[c],?i)
????}
????res?:=?0
????for?_,?arr?:=?range?indies?{
????????arr?=?append(arr,?len(s))
????????for?i?:=?1;?i?<?len(arr)-1;?i++?{
????????????res?+=?(arr[i]?-?arr[i-1])?*?(arr[i+1]?-?arr[i])
????????}
????}
????return?res
}

func?main()?{
????s?:=?"ABC"
????res?:=?uniqueLetterString(s)
????fmt.Println(res)
}

圖片
在這里插入圖片描述

rust完整代碼如下:

use?std::collections::HashMap;

fn?unique_letter_string(s:?&str)?->?i32?{
????//?key?:?某一種字符
????//?value?:?出現(xiàn)這種字符依次的位置
????let?mut?indies:?HashMap<char,?Vec<i32>>?=?HashMap::new();
????for?(i,?c)?in?s.chars().enumerate()?{
????????indies.entry(c).or_insert_with(Vec::new).push(i?as?i32);
????}
????let?mut?res?=?0;
????for?(_,?arr)?in?indies.iter()?{
????????let?mut?arr?=?arr.clone();
????????arr.insert(0,?-1);
????????arr.push(s.len()?as?i32);
????????for?i?in?1..arr.len()?-?1?{
????????????res?+=?(arr[i]?-?arr[i?-?1])?*?(arr[i?+?1]?-?arr[i]);
????????}
????}
????res?as?i32
}

fn?main()?{
????let?s?=?"ABC";
????let?res?=?unique_letter_string(s);
????println!("{}",?res);
}

圖片
在這里插入圖片描述

c完整代碼如下:

#include?<stdio.h>
#include?<stdlib.h>
#include?<string.h>

#define?MAX_N?1000

struct?Vector?{
????int?data[MAX_N];
????int?size;
};

void?vector_init(struct?Vector*?vec)?{
????memset(vec->data,?-1,?sizeof(vec->data));
????vec->data[0]?=?-1;
????vec->size?=?1;
}

void?vector_push_back(struct?Vector*?vec,?int?x)?{
????vec->data[vec->size++]?=?x;
}

int?uniqueLetterString(char*?s)?{
????//?key?:?某一種字符
????//?value?:?出現(xiàn)這種字符依次的位置
????struct?Vector?indies[256];
????int?cnt[256]?=?{?0?};
????for?(int?i?=?0;?s[i];?i++)?{
????????char?c?=?s[i];
????????if?(cnt[c]?==?0)?{
????????????vector_init(&indies[c]);
????????}
????????vector_push_back(&indies[c],?i);
????????cnt[c]++;
????}
????int?res?=?0;
????for?(int?c?=?0;?c?<?256;?c++)?{
????????if?(cnt[c]?==?0)?continue;
????????vector_push_back(&indies[c],?strlen(s));
????????for?(int?i?=?1;?i?<?indies[c].size?-?1;?i++)?{
????????????int?left?=?indies[c].data[i]?-?indies[c].data[i?-?1];
????????????int?right?=?indies[c].data[i?+?1]?-?indies[c].data[i];
????????????res?+=?left?*?right;
????????}
????}
????return?res;
}

int?main()?{
????char?s[]?=?"ABC";
????int?res?=?uniqueLetterString(s);
????printf("%d\n",?res);
????return?0;
}

圖片
在這里插入圖片描述

c++完整代碼如下:

#include?<iostream>
#include?<vector>
#include?<unordered_map>
using?namespace?std;

int?uniqueLetterString(string?s)?{
????//?key?:?某一種字符
????//?value?:?出現(xiàn)這種字符依次的位置
????unordered_map<char,?vector<int>>?indies;
????for?(int?i?=?0;?i?<?s.length();?i++)?{
????????char?c?=?s[i];
????????if?(!indies.count(c))?{
????????????indies[c]?=?{?-1?};
????????}
????????indies[c].push_back(i);
????}
????int?res?=?0;
????for?(auto?entry?:?indies)?{
????????auto?arr?=?entry.second;
????????arr.push_back(s.length());
????????for?(int?i?=?1;?i?<?arr.size()?-?1;?i++)?{
????????????res?+=?(arr[i]?-?arr[i?-?1])?*?(arr[i?+?1]?-?arr[i]);
????????}
????}
????return?res;
}

int?main()?{
????string?s?=?"ABC";
????int?res?=?uniqueLetterString(s);
????cout?<<?res?<<?endl;
????return?0;
}

圖片
在這里插入圖片描述

福大大架構(gòu)師每日一題

java當死,golang當立。最新面試題,涉及golang,rust,mysql,redis,云原生,算法,分布式,網(wǎng)絡(luò),操作系統(tǒng)。

499篇原創(chuàng)內(nèi)容

公眾號



2023-05-08:我們定義了一個函數(shù) countUniqueChars(s) 來統(tǒng)計字符串 s 中的唯一字符,的評論 (共 條)

分享到微博請遵守國家法律
射洪县| 德格县| 长葛市| 晋城| 福安市| 舟曲县| 都昌县| 印江| 天峨县| 宁波市| 射洪县| 兰溪市| 镇赉县| 茂名市| 林周县| 德州市| 邓州市| 出国| 顺昌县| 龙游县| 仪征市| 中方县| 芷江| 永修县| 龙海市| 志丹县| 东平县| 灯塔市| 拜泉县| 乌兰浩特市| 津南区| 长葛市| 乐清市| 桐乡市| 高密市| 扶余县| 安平县| 城步| 同仁县| 唐河县| 通州市|