r语言:检查一个输入的字符串是否是回文字符串。回文字符串,即,“abccba”与“123d321”都算是回文字符串。注意:字符串长度可能会奇数或偶数: 1,如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文 2,如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文 要求: 1. 写一个函数实现上述问题 2. 输入参数是字符串 3. 输出结果为判断这个字符串是否是回文,如果“是”返回:“TRUE”,否则返回:“FALSE”
时间: 2024-03-04 18:48:18 浏览: 14
可以使用以下代码实现:
```r
is_palindrome <- function(string){
n <- nchar(string)
if(n == 1) return("TRUE") #长度为1的字符串为回文
else if(n == 2) return(string[1] == string[2]) #长度为2的字符串需要特判
else {
mid_index <- (n+1) %/% 2 #计算中间位置
left_half <- substr(string, 1, mid_index-1) #取左半部分
right_half <- substr(string, mid_index+1, n) #取右半部分
return(rev(left_half) == right_half) #比较左半部分的倒序和右半部分是否相等
}
}
```
函数说明:
- `nchar(string)`:计算字符串长度。
- `if(n == 1) return("TRUE")`:如果字符串长度为1,直接返回“TRUE”。
- `else if(n == 2) return(string[1] == string[2])`:如果字符串长度为2,需要特判,只有两个字符相等才为回文。
- `mid_index <- (n+1) %/% 2`:计算中间位置,使用 `%/%` 运算符取整除。
- `substr(string, 1, mid_index-1)`:`substr()` 函数用于取子字符串,这里取左半部分。
- `rev(left_half) == right_half`:`rev()` 函数用于倒序一个向量,这里使用它倒序左半部分,并与右半部分比较是否相等。
使用示例:
```r
> is_palindrome("abccba")
[1] "TRUE"
> is_palindrome("123d321")
[1] "TRUE"
> is_palindrome("1234321")
[1] "TRUE"
> is_palindrome("hello")
[1] "FALSE"
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)