检查一个输入的字符串是否是回文字符串。回文字符串,即,“abccba”与“123d321”都算是回文字符串。注意:字符串长度可能会奇数或偶数: 1,如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文。 2,如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文 要求: 1. 写一个R语言函数实现上述问题 2. 输入参数是字符串 3. 输出结果为判断这个字符串是否是回文,如果“是”返回:“TRUE”
时间: 2024-03-11 11:43:28 浏览: 65
如果一个字符串是回文字符串,则它的前一半和后一半是对称的,可以使用下面的R函数实现:
```R
is_palindrome <- function(str){
# 去除空格并将字符串转为小写
str <- gsub(" ", "", str)
str <- tolower(str)
# 计算字符串长度
len <- nchar(str)
# 初始化左右指针
left <- 1
right <- len
# 循环比较左右两端字符是否相等
while(left <= right){
if(substr(str, left, left) != substr(str, right, right)){
# 如果左右两端字符不相等,则不是回文字符串
return(FALSE)
}
# 移动左右指针
left <- left + 1
right <- right - 1
}
# 所有字符都比较完毕,是回文字符串
return(TRUE)
}
```
使用示例:
```R
str1 <- "abccba"
str2 <- "123d321"
str3 <- "hello world"
print(is_palindrome(str1)) # 输出 TRUE
print(is_palindrome(str2)) # 输出 TRUE
print(is_palindrome(str3)) # 输出 FALSE
```
注意,如果要区分大小写,可以将 `tolower(str)` 改为 `str`。
阅读全文