How do you write a matlab function that identifies if a string is a palindrome or not?

조회 수: 26 (최근 30일)
So far I've got ...
string = input('What is your number: '); disp(fliplr(string))
if string == fliplr(string) disp('Your number is a PALINDROME') else disp('Your number is NOT A PALINDROME') end
And now I'm stuck

채택된 답변

Image Analyst
Image Analyst 2014년 3월 30일
Almost. Try this:
string = input('What is your string: ', 's');
fprintf('Your string = %s\nFlipped, it = %s\n', string, fliplr(string));
if string == fliplr(string)
disp('Your number is a PALINDROME')
else
disp('Your number is NOT A PALINDROME')
end
  댓글 수: 4
Star Strider
Star Strider 2014년 3월 30일
That’s my all time fave!
Probably need to remove all blanks as well before flipping and doing the comparison.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

sesha sai
sesha sai 2020년 9월 26일
function [ palindromic ] = palindrome( string )
if length(string) < 1
palindromic = logical(1);
return;
end
if string(1) ~= string(length(string))
palindromic = logical(0);
return;
end
palindromic = palindrome(string(2:length(string)-1));
end

Benjamin Askelund
Benjamin Askelund 2016년 10월 19일
편집: Benjamin Askelund 2016년 10월 19일
Hi, I made a code that flipps as well NOT USING fliplr based on "Image Analyst" code. Lots of people ask for this as far as I know
clc
%Ask user for string
A = input('What is your string: ', 's');
%flipp string
B = flip(A);
fprintf('Your word = %s\nflipped word is = %s\n', A, B);
%compare stringA and FlippedString (bool)
if strcmp(A, B) == 1
disp('Your number is a PALINDROME')
else
disp('Your number is NOT A PALINDROME')
end
This code also works for numbers. Just type numbers insted of strings
Sorce: https://se.mathworks.com/help/matlab/ref/flip.html
Signed BDA
  댓글 수: 2
Steven Lord
Steven Lord 2016년 10월 19일
Lots of people ask for this because it's a fairly easy homework assignment and so it is one that's often assigned in courses where students are being introduced to MATLAB.

댓글을 달려면 로그인하십시오.


Bhuvana Krishnaraj
Bhuvana Krishnaraj 2020년 1월 9일
편집: Walter Roberson 2024년 1월 10일
x=input('Enter number: ');
temp=x;
y = 0;
while x > 0
t = mod(x,10);
y = 10*y+t;
x = (x-t)/10; %% without this it will give floating value
end
if(y==temp)
disp('The number is palindrome');
else
disp('The number is not palindrome');
end
  댓글 수: 1
Walter Roberson
Walter Roberson 2020년 9월 26일
Suppose the user enters 050. That would certainly appear to be a palindrome. You use input() with no 's' to read it so you get a binary double precision value equal to decimal 50. You proceed to process it numerically and get 10*0 + 5 = 5. But 5 is not 50 so you say No it is not a palindrome. When it should probably be one.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by