我遇到了一个问题-“查找具有最大不同字符的最短子字符串” 这个问题是否与“查找包含所有不同字符的最长子字符串”相同?和“查找最长的非重复字符子字符串?”
如果是的话,有人可以帮我解决这个问题吗?我在网上搜索过,但是所有这些都通过互联网上的不同逻辑来实现
我的问题不是基于英语,但如果逻辑上所有这些问题都能为所有可能的字符串提供相同的输出。
答案 0 :(得分:0)
” 查找具有最大不同字符的最短子字符串
在“快速的棕色狐狸跳过懒狗”中,所有英文字母字符都出现了。因此,这是该字符串的最大不同字符,即26个字符A到Z。该问题要求包含所有这些字符 somewhere 的最短子字符串,也许有些字符出现两次或更多次。由于G仅出现在末尾,这意味着子字符串必须在此结束。嗯,它不是从头开始的,因为T是重复的。
为提交解决方案,可能应该预先声明一个假设,即在常见的英语含义中使用“字符”,其中大写和小写版本被视为同一字符。
这随后需要使用大写或小写功能,C ++标准库仅支持Unicode的BMP子集(因为最通用的功能是通过towupper
或towlower
,而{{1} }是我所知道的所有现存系统上的Unicode编码,在Windows中只有16位。
” 查找包含所有不同字符的最长子字符串
“所有不同的字符”表示子字符串不得包含相同的字符两次或多次。
” 查找最长的非重复字符子字符串
对我而言,最有意义的解释是“重复”是指在子字符串的成功位置中具有相同的字符,例如wchar_t
。同一字符出现两次或两次以上但位置不成功(例如"jeep"
)不会重复。在这种解释中。这个问题可以用例子来澄清。