阿拉尔罐体保温施工队 226-4-13: 不同字母的子字符串数量。用go说话, 给定个只包
发布日期:2026-04-15 15:07 点击次数:63

226-4-13:不同字母的子字符串数量。用go说话阿拉尔罐体保温施工队,给定个只包含小写字母的字符串 s。
你需要把它切分红些许个一语气、非空的子串(隐敝通盘字符串,且不重复)。
认识是:让子串的数量尽可能多,并快乐戒指——每个子串的肇始字符皆必须各不交流,也即是说苟且两个子串的个字母不成交流。
请输出快乐上述条款时,子串的大数量。
1
s 仅由小写英翰墨母构成。
输入: s = "abcd"。
输出: 4。
解说:
不错将 "abcd" 分离为 "a"、"b"、"c" 和 "d"。
每个子字符串皆以不同的字符源头。因此,谜底是 4。
题目来独力扣376。
解题历程分步详备形色
、衔接题目中枢要求
咱们需要把给定的纯小写字母字符串,分割成一语气、不重复、非空的子串,快乐两个关键条款:
1. 悉数子串的肇始字符必须不同(不成有两个子串以同个字母源头);
2. 在快乐个条款的前提下,分割出的子串数量要尽可能多。
终输出这个大的子串数量。
补充:小写字母共只消26个(a-z),因此大可能的子串数量始终不会过26,这是中枢戒指。
二、解题中枢念念路
要让子串数量多,战略是:尽可能把每个字符单切分为个子串,只消这个字符还莫得被用作过子串的肇始字符。
因为旦某个字母行为子串源头使用过次,后续就不成再用了,是以咱们需要纪录也曾使用过的肇始字母,遍历字符串时一一判断。
三、分门径实践历程(以示例 s="abcd" 为例)
门径1:运行化纪录器用
创建个符号聚拢/符号位,门用来纪录也曾被用作子串肇始的字母,运管事态为空,莫得任何字母被使用。
同期运行化个计数器,用来统计终的子串数量,运行值为。
门径2:从新脱手遍历字符串的每个字符
咱们按划定管制字符串中的每个字符,判断现时字符是否能行为新子串的肇始字符:
1. 管制个字符 a:
• 查抄 a 是否在已使用的肇始字母聚拢中 → 未使用;
• 不错将 a 单切分为个子串;
• 子串计数器 +1(现时计数:1)。
2. 管制二个字符 b:
• 查抄 b 是否在已使用的肇始字母聚拢中 → 未使用;
• 不错将 b 单切分为个子串;
• 子串计数器 +1(现时计数:2)。
3. 管制三个字符 c:
• 查抄 c 是否在已使用的肇始字母聚拢中 → 未使用;
• 不错将 c 单切分为个子串;
• 子串计数器 +1(现时计数:3)阿拉尔罐体保温施工队。
4. 管制四个字符 d:
• 查抄 d 是否在已使用的肇始字母聚拢中 → 未使用;
• 不错将 d 单切分为个子串;
• 子串计数器 +1(现时计数:4)。
门径3:遍历收场,输出服从
通盘字符串遍历完成,计数器的值即是大子串数量,终服从为4。
四、通用场景补充诠释(非示例,匡助衔接)
若是字符串出现重复字母,举例 s="abac":
1. 个字符a:未使用,铝皮保温切分,计数=1,符号a;
2. 二个字符b:未使用,切分,计数=2,符号b;
3. 三个字符a:已符号使用过,不成行为新子串源头,必须和前个子串归拢(即ba归拢为个子串);
地址:大城县广安工业区4. 四个字符c:未使用,切分,计数=3,符号c;
终服从为3。
复杂度分析
1. 时间复杂度
• 咱们只需要从新到尾遍历次字符串,每个字符仅管制次;
• 悉数判断、符号操作皆是常数时间 O(1)(因为字母只消26个,操作稀疏轮回);
• 总时间复杂度:O(n),n 为字符串的长度。
2. 稀疏空间复杂度
• 咱们仅使用了固定大小的空间(个整数位符号/26个布尔值符号)来纪录已使用的字母;
• 空间大小不随字符串长度 n 变化,属于常数空间;
• 总数外空间复杂度:O(1)。
回来
1. 解题中枢:遍历字符串,符号已使用的肇始字母,尽可能切分单个字符为子串;
2. 时间复杂度:O(n)(线遍历,适配1万长度的字符串);
3. 稀疏空间复杂度:O(1)(常数空间,稀疏内存诬害)。
Go完满代码如下:
package main
import (
"fmt"
"math/bits"
)
func maxDistinct(s string)int {
set :=
for _, c := range s {
set |= 1
}
return bits.OnesCount(uint(set))
}
func main {
s := "abcd"
result := maxDistinct(s)
fmt.Println(result)
}
Python完满代码如下:
# -*-coding:utf-8-*-
def max_distinct(s: str) -> int:
bitmask =
for c in s:
bitmask |= 1
return bin(bitmask).count('1')
if __name__ == "__main__":
s = "abcd"
result = max_distinct(s)
print(result)
C++完满代码如下:
#include
#include
#include
int maxDistinct(const std::string& s) {
int set = ;
for (char c : s) {
set |= 1
}
return std::popcount(static_cast(set));
}
int main {
std::string s = "abcd";
int result = maxDistinct(s);
std::cout
return;
}
咱们折服东说念主工智能为庸碌东说念主提供了种“增强器用”,并奋发于共享全位的AI学问。在这里,您不错找到新的AI科普著作、器用评测、缓助率的秘密以及行业知悉。
接待温存“福大大架构师逐日题”,发音信可获取口试贵府,让AI助力您的曩昔发展。
相关词条:罐体保温施工 异型材设备 锚索 玻璃棉 保温护角专用胶1.本网站以及本平台支持关于《新广告法》实施的“极限词“用语属“违词”的规定,并在网站的各个栏目、产品主图、详情页等描述中规避“违禁词”。
2.本店欢迎所有用户指出有“违禁词”“广告法”出现的地方,并积极配合修改。
3.凡用户访问本网页,均表示默认详情页的描述,不支持任何以极限化“违禁词”“广告法”为借口理由投诉违反《新广告法》,以此来变相勒索商家索要赔偿的违法恶意行为。
马鞍山设备保温厂家 浅蓝解围,李泽楷浅蓝西装亮相早餐,霍启刚
抚州铝皮保温厂家 俄好意思乌三轮会谈细节裸露:
蚌埠铁皮保温工程 南京一211高校通知高数成绩差将请家长陪读
池州管道保温施工 后场大闸打出了超水平的表现,结果湖人也只是
六盘水铁皮保温工程 UNS N10276英科耐尔热膨胀能和抗
深圳铝皮保温施工队 李现与张子枫甜蜜照曝光:网友疯狂催更,一
