最长元音子串的长度

# 1787. 【认证试题】最长元音子串的长度

- 出题人:刘梦丹
- 标签:["字符数组"]
- 难度:简单
- 总分数:100

## 题目描述
定义:当一个字符串只有元音字母(aeiouAEIOU)组成,称为元音字符串。
现给定一个字符串,请找出其中最长的元音字符子串,并返回其长度;如果找不到,则返回0。

>子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。

## 解答要求
时间限制:1000ms, 内存限制:256MB

## 输入
一个字符串,其长度范围: 0 < length <= 65535。
>字符串仅由字符`a-z`和`A-Z`组成。

## 输出
一个整数,表示最长的元音字符子串的长度。

## 样例
### 输入样例 1:
```
asdbuiodevauufgh

```
### 输出样例 1:
```
3
```
## 提示
**答题要求:结果可信和过程可信同样重要,您编写的代码需要符合可信的要求(包括通用编码规范、安全编码规范和圈复杂度)。**



package main

import (
"bufio"
"fmt"
"io"
"os"
"strings"
)

func isByteContain(vowel byte,vowelBytes []byte)bool{
totalLen := len(vowelBytes)
for i:=0;i<totalLen;i++{
if vowel == vowelBytes[i]{
return true
}
}
return false
}

func getLongestVowelStringLength(input string)int{
//字符串转为数组
//判断是否是元音字符,如果是maxLen + 1,如果不是,记录maxLen,最终返回最大的maxLen
vowelString := "aeiouAEIOU"
vowelBytes := []byte(vowelString)
maxLen := 0
start := 0
readInput := []byte(input)
totalLen := len(readInput)
for i:= 0;i<totalLen;i++{
if isByteContain(readInput[i],vowelBytes){
maxTemp := i-start+1
if maxTemp > maxLen{
maxLen = maxTemp
}
continue
}
start = i+1
}
return maxLen
}


func main(){
inputBuf := bufio.NewReader(os.Stdin)
input,err := readInput(inputBuf)
if err != nil{
return
}
res := getLongestVowelStringLength(input)
fmt.Println(res)
}

func readInput(reader *bufio.Reader)(string,error){
lineBuf, err := reader.ReadString('\n')
if err != nil && err != io.EOF {
return "",err
}
lineBuf = strings.TrimRight(lineBuf,"\r\n")
return lineBuf,nil
}
posted @ 2022-03-07 22:28  易先讯  阅读(380)  评论(0编辑  收藏  举报