#java #string #palindrome
#java #строка #палиндром
Вопрос:
Я хочу создать программу для строкового палиндрома без использования встроенных функций.
Ниже приведен код, который я пробовал до сих пор :
public class Palindrom
{
private static Scanner in;
public static void main(String[] args)
{
String s,str1,str2;
Scanner scan =new Scanner (System.in);
System.out.println("Enter the string");
String s = in.nextLine();
StringBuffer str1 = new StringBuffer();
StringBuffer str2 = new StringBuffer();
str1.reverse();
System.out.println("orignal string=" str2);
System.out.println("reveser string=" str1);
if(String.valueOf(str1).compareTo(String.valueOf(str2))==0)
System.out.println("palindrom");
else
System.out.println("not palindrom");
}
}
Эта программа не работает должным образом.Я думаю, что проблема в in.nextLine
и строковом буфере.
Комментарии:
1. Пожалуйста, прочитайте всплывающие окна с полезными тегами, прежде чем размещать их в своем сообщении! Этот вопрос не имеет ничего общего с Swing!
2. Пожалуйста, используйте форматирование кода для кода и фрагментов кода, структурированных документов, таких как HTML / XML или ввод / вывод. Для этого выделите текст и нажмите
{}
кнопку в верхней части формы публикации / редактирования сообщения.3. Добавьте еще немного описания. Похоже, вы хотите проверить, является ли строка палиндромом. Я вижу несколько проблем:
String s
больше не используется. Также, если вы говорите «без использования встроенных функций», тогда почему вы используетеStringBuffer.reverse()
.4. просто для информации, в java они называют это методом, а не функцией
5. По крайней мере, вы пробовали что-нибудь (без встроенных методов)??
Ответ №1:
Приведенный ниже самый простой способ проверить, является ли введенная здесь строка кода enteredenter палиндромом.
import java.util.Scanner;
public class Strng {
public static void main(String[] args) {
String r = ""; //To store the reverse
Scanner sc = new Scanner(System.in);
System.out.println("Enter the String");
String s = sc.next(); // Entering the string
for(int i= s.length() - 1;i>=0;i--) {
r = r s.charAt(i);
}
if(r.equals(s)) {
System.out.println("Is a palindrome");
}
else {
System.out.println("Not a palindrome");
}
}
}
Ответ №2:
public static void palindrome(String str){
Map<Character,Integer> myMap = new HashMap<Character, Integer>();
int characterCounter = 1;
int index=-1;
for(char ch : str.toCharArray()){
index ;
if(str.length()%2!=0 amp;amp; index==Math.abs(str.length()/2)) continue;
if(myMap.containsKey(ch))
characterCounter = myMap.get(ch) 1;
myMap.put(ch, characterCounter);
}
boolean flag = true;
for(Character myMApVal: myMap.keySet()){
if(myMap.get(myMApVal)%2!=0){
flag=false;
break;
}
}
if(!flag) System.out.println(str " is not palindrome");
else System.out.println(str " is palindrome");
}
Ответ №3:
package practice;
import java.util.Scanner;
public class String_Palindrome {
public static void main(String[] args) {
//String s, str1, str2;
Scanner scanner = new Scanner(System.in);
System.out.println("Enter the string:");
String s = scanner.nextLine();
StringBuffer str1 = new StringBuffer(s);
StringBuffer str2 = new StringBuffer(s);
str1.reverse();
//System.out.println("Original String is:" str2);
//System.out.println("Reverse String is:" str1);
if (String.valueOf(str1).compareTo(String.valueOf(str2)) == 0)
System.out.println("Given String is a palindrome");
else
System.out.println("Given String is Not a palindrome");
}
}
Ответ №4:
Приведенный ниже код — это самый простой способ проверить, является ли строка палиндромом.
public class pal {
static String palindrome(String str) {
char[] array = str.toCharArray();
for (int i = 0; i < array.length / 2; i ) {
if (array[i] != array[array.length - i - 1]) {
return "not a palindrome ";
}
}
return "palindrome ";
}
public static void main(String args[]) {
System.out.println(palindrome("11211"));
}
}
Ответ №5:
import java.util.Scanner;
public class Palindrom {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter the string");
String inputStr =scanner.next();
System.out.println("Given String = " inputStr);
char [] charArray=inputStr.toCharArray();
int strlength=(charArray.length)-1;
boolean isPalindrom=true;
for(int count=0; count<charArray.length amp;amp; strlength >= 0; count ,strlength--){
if(charArray[count]!=charArray[strlength]){
isPalindrom=false;
break;
}
}
if(isPalindrom){
System.out.println("palindrom");
}else{
System.out.println("not palindrom");
}
}
}
Объяснение :
- Заданная строка для преобразования массива символов.
-
Возьмите две точки
1-е начало строки a[0]
2-й конец строки a[длина-1]
-
Сравните каждый символ в массиве символов
Сравните начало с концом и начало конца во время цикла.
Случай палиндрома 1: (длина нечетная)
«мадам» — это палиндром:
a[0] == a[4] m
a[1] == a[3] a
a[2] == a[2] d
a[3] == a[1] a
a[4] == a[0] m
Случай палиндрома 2: (длина четная)
«малаялам» — это палиндром:
a[0] == a[8] m
a[1] == a[7] a
a[2] == a[6] l
a[3] == a[5] a
a[4] == a[4] y
a[5] == a[3] a
a[6] == a[2] l
a[7] == a[1] a
a[8] == a[0] m
Не случай палиндрома 3: не совпадает во всех символах (от начала до конца и от начала до конца).
Комментарии:
1. Не могли бы вы объяснить свой ответ вместо того, чтобы просто сбрасывать код?
Ответ №6:
import java.util.Scanner;
public class StringPalindrome {
public static void main(String[] args) {
Scanner sc = null;
String str1 = null;
// create object for scanner class
sc = new Scanner(System.in);
if (sc != null) {
System.out.println("Enter First String");
str1 = sc.nextLine();
}
strPalindrom(str1);
}// main
static void strPalindrom(String str) {
// converting string into array
char ch[] = str.toCharArray();
// check string is Palindrom or not
int count = ch.length - 1;
for (int i = 0; i < ch.length; i , count--) {
if (ch[i] != ch[count]) {
System.out.println("String is not Palindrom");
break;
} else {
if (i == count) {
System.out.println("String is Palindrom");
}
}
} // for
}// strPalindrom method
}// class
Комментарии:
1. Хотя предоставление кода — это нормально, вы также должны предоставить описание того, что делает ваш код, и почему вы выбрали это решение. Таким образом, другие могут понять ваши мыслительные процессы, используемые при создании вашего ответа.
Ответ №7:
Я видел выше всю программу, но она немного сложна, не понятна новичкам.
Очень простая программа для начинающих (для проверки строкового палиндрома)
public class Palindrome{
public static void main(String[] args) {
String s = "malayalam"; // enter here your requred String to check Palindrom
String rev = "";
for (int i = s.length() - 1; i >= 0; i--) {
rev = rev s.charAt(i);
}
if (rev.equals(s)) {
System.out.println("Palindrom");
} else {
System.out.println("Not Palindrom");
}
}
}
Ответ №8:
import java.util.*;
class Test{
public static void main(String... as){
int check=0;
Scanner s= new Scanner(System.in);
String str = s.nextLine();
int l=str.length();
for (int i=0;i<l;i ){
if(str.charAt(i)!=str.charAt(l-1-i))
check ;
}
if(check==0)
System.out.println("yes it's palindrome");
else
System.out.println("no it's not.");
}
}
Комментарии:
1. Это короткий и лучший метод.
Ответ №9:
public class Palindrom {
public static void main(String[] args) {
String str= "dad";
char[] rev=str.toCharArray();
int i=0;
int j= rev.length-1;
while(i<j){
char temp =rev[i];
rev[i] = rev[j];
rev[j] = temp;
i ;
j--;
}
System.out.println(rev);
System.out.println();
if(str.equals(String.valueOf(rev))){
System.out.println("Yes! It is palindrom");
}else{
System.out.println("No! It is not palindrom");
}
}
}
Комментарии:
1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, почему и / или как этот код отвечает на вопрос, повышает его долгосрочную ценность.