我正在使用SQL Server,我想检查给定字符串是否是回文 - 但不使用reverse
函数。
答案 0 :(得分:4)
有多种方法可以实现这一目标。其中之一是检查第一个和最后一个字符,如果它们相等则将它们切片并继续循环。
DECLARE @string NVARCHAR(100)
DECLARE @counter INT
SET @string = 'Your string'
SET @counter = LEN(@string)/2
WHILE (@counter > 0)
BEGIN
IF LEFT(@string,1) = RIGHT(@string,1)
BEGIN
SET @string = SUBSTRING(@string,2,len(@string)-2)
SET @counter = @counter - 1
END
ELSE
BEGIN
PRINT ('Given string is not a Palindrome')
BREAK
END
END
IF(@counter = 0)
PRINT ('Given string is a Palindrome')
答案 1 :(得分:2)
没有循环的选择
"assets": ["0901d196804adc1c"]
答案 2 :(得分:1)
以下是使用LEFT
和RIGHT
的示例。我使用@count变量来改变位置,然后抓住最左边和最右边的char:
DECLARE @mystring varchar(100) = 'redivider'
DECLARE @count int = 1
WHILE (@count < LEN(@mystring) / 2) AND @count <> 0
BEGIN
IF (RIGHT(LEFT(@mystring, @count), 1) <> LEFT(RIGHT(@mystring, @count), 1))
SET @count = 0
ELSE SET @count += 1
END
SELECT CASE WHEN @count = 0
THEN 'Not a Palindrome'
ELSE 'Palindrome'
END [Result]