Comment imprimer l'inverse de la chaîne Java est une langue orientée objet code> sans utiliser de fonction prédéfinie comme
inverse () code>? P>
34 Réponses :
Tout d'abord: pourquoi réinventer la roue? p>
qui étant dit: boucle de la longueur de la chaîne à 0 et concaténate dans une autre chaîne. P>
Vous pouvez le faire de manière récursive ou itérative (boucle).
itératif: p> récursivement: p>
-1 Pour simplement afficher une solution de copie et de coller pour une attribution de devoirs aussi évidente.
Pour les bownvotes: Veuillez lire les directives:
@ PolyGenLubrifiants semble être le plus d'accord pour dire qu'il s'agit d'une question évidente des devoirs et des lignes directrices parlent de manière non évidente.
Pour les questions de devoirs, il peut s'agir d'une bonne pratique d'inclure un peu d'explication afin de ne pas devenir CTRL-C, CTRL-V
Charat () et Longueur () sont des fonctions de chaîne.
Selon la question donnée, nous ne devrions utiliser aucun type de fonction prédéfinie.
Eh bien, l'impression elle-même em> suggérerait une fonction prédéfinie ... p>
Vraisemblablement, cependant, vous pouvez obtenir les personnages et les concaténer manuellement à l'envers (c'est-à-dire en boucle vers l'arrière). Bien sûr, vous pourriez dire la concaténation em> est une fonction prédéfinie ... alors peut-être que le tableau de charcuterie elle-même. Mais encore une fois ... pourquoi em>? P>
est la source autorisée à contenir "Egaugnal Detaniroro Tcejbo Si Avaj" ;-p p>
Aussi - notez que l'inversion de chaîne est en fait assez complexe si vous envisagez unicode combinant des caractères, des paires de substitution, etc. Vous devez noter la mise en garde que la plupart des mécanismes d'inversion des chaînes ne traiteront que les cas plus courants, mais peuvent lutter avec I18N. p>
Que diriez-vous d'une nouvelle traverse de la fin de la chaîne à la bec:
Ceci est la solution la plus simple:
System.out.print("egaugnal detatneiro tcejbo si avaj");
C'est ce qui se passe lorsque les gens ne posent pas de questions correctement.
Je pense que Stackoverflow devrait mettre en œuvre des smileys :)
Voici une solution récursive qui imprime simplement la chaîne dans l'ordre inverse. Il devrait être éducatif si vous essayez d'apprendre la récursive. J'ai également fait "mal" en ayant réellement 2 déclarations code> Imprimer code>; L'un d'entre eux doit être commenté. Essayez de déterminer les expériences mentalement mentalement ou simplement. De toute façon, apprenez-en de cela.
static void printReverse(String s) { if (!s.isEmpty()) { System.out.print(s.substring(0, 1)); printReverse(s.substring(1)); System.out.print(s.substring(0, 1)); } }
Integer i = new Integer(15); test(i); System.out.println(i); test(i); System.out.println(i); public static void test (Integer i) { i = (Integer)i + 10; }
retour S.Charat (S.Length () - 1) + Reverse (S.Substring (1)); est faux à la place, il devrait être renvoyé S.charat (S.Length () - 1) + Reverse (S.Substring (0, S.Length ()));
String a="Siva"; for(int i=0;i<=a.length()-1;i++){ System.out.print(a.charAt(i)); } for(int i = a.length() - 1; i >= 0; --i){ System.out.println(a.charAt(i)); }
J'avais cela au dos et j'ai répondu avec la réponse de StringBuffer.Reverse () évidente (), ils ont ensuite demandé "Pouvez-vous inverser une matrice de caractère sans utiliser ces méthodes d'API et atteindre le résultat sans gonfler dans un nouveau tableau de caractères? "
À l'époque, j'ai reconnu que je n'avais que besoin de itérer plus de la moitié de la longueur de la matrice de caractère, mais j'ai fait un peu de hachage d'expliquer le code réel qui devait y aller (c'était une question verbale). Quoi qu'il en soit, j'ai essayé quand je suis rentré à la maison et je suis venu avec ceci: p> Vous pouvez évidemment y parvenir avec moins de code, mais je pense que les affectations temporaires dans la méthode le rendent plus clair ce que le code fait. p> sortira quelque chose comme: p> plus d'une question d'entretien que la question des devoirs, je dirais. < / p> p>
public class ReverseString { public static void main(String [] args) { String s = "reverse string" ; String b = ""; for (int i = 0; i < s.length(); i++ ){ b= b + s.substring(s.length()-1-i, s.length()-i); } System.out.println(b); }
moyen le plus simple de le faire sans utiliser de méthode spécifique.
Bienvenue sur Stackoverflow. C'est très similaire aux suggestions précédentes. Compte tenu de l'âge de ce fil, il est préférable de ne pas ressusciter que si la réponse contribue quelque chose de significativement différent des réponses précédentes.
String reverse(String s) { int legnth = s.length(); char[] arrayCh = s.toCharArray(); for(int i=0; i< length/2; i++) { char ch = s.charAt(i); arrayCh[i] = arrayCh[legnth-1-i]; arrayCh[legnth-1-i] = ch; } return new String(arrayCh); }
public class StringReverse { public static void main(String ar[]){ System.out.println(reverseMe("SRINIVAS")); } static String reverseMe(String s){ StringBuffer sb=new StringBuffer(); for(int i=s.length()-1;i>=0;--i){ sb.append(s.charAt(i)); } return sb.toString(); } }
private void rev() { String st="hello"; String b=""; for(int i=st.length()-1;i>=0;i--){ b=b+st.charAt(i); } System.out.println("reverse:::"+b); }
import java.util.*; public class Restring { public static void main(String[] args) { String input,output; Scanner kbd=new Scanner(System.in); System.out.println("Please Enter a String"); input=kbd.nextLine(); int n=input.length(); char tmp[]=new char[n]; char nxt[]=new char[n]; tmp=input.toCharArray(); int m=0; for(int i=n-1;i>=0;i--) { nxt[m]=tmp[i]; m++; } System.out.print("Reversed String is "); for(int i=0;i<n;i++) { System.out.print(nxt[i]); } }
public class StringReverse { public static void main(String[] args) { String s= (args[0]); for (int i =s.length()-1; i >= 0; i--) { System.out.print(s.charAt(i)); } } } Prints the reversed string of the input.
public String reverse(String arg) { String tmp = null; if (arg.length() == 1) { return arg; } else { String lastChar = arg.substring(arg.length()-1,arg.length()); String remainingString = arg.substring(0, arg.length() -1); tmp = lastChar + reverse(remainingString); return tmp; } }
String x = "stack overflow"; String reversed = ""; for(int i = x.length()-1 ; i>=0; i--){ reversed = reversed+ x.charAt(i); } System.out.println("reversed string is : "+ reversed);
public static void main(String[] args) { String str = "hello world here I am"; StringTokenizer strToken = new StringTokenizer(str); int token = strToken.countTokens(); String str1 [] = new String[token]; char chr[] = new char[str.length()]; int counter = 0; for(int j=0; j < str.length(); j++) { if(str.charAt(j) != ' ') { chr[j] = str.charAt(j); }else { str1[counter++] = new String(chr).trim(); chr = new char[str.length()]; } } str1[counter++] = new String(chr).trim(); for(int i=str1.length-1; i >= 0 ; i--) { System.out.println(str1[i]); } } O/P is: am I here world hello
public class ReverseWithoutStringAPI { public static void main(String[] args) { String st="hello"; StringBuffer b=new StringBuffer(); for(int i=st.length()-1;i>=0;i--){ b.append(st.charAt(i)); } System.out.println("reverse:::"+b); } }
Essayez ceci:
public class Test { public static void main(String[] args) { String s = "welcome"; for( int i=0, j = (s.length())-1; i <= j; j-- ) { char c=s.charAt(j); System.out.print(c); } } }
Qu'est-ce que la surprise est que la plupart des réponses sont fausses! Quand Unicode est utilisé. On dirait que personne ne comprend que Java utilise UTF-16 sous la hotte pour codage de texte.
Voici ma réponse simple. P>
static String reverseMe(String s) { StringBuilder sb = new StringBuilder(); int count = s.codePointCount(0,s.length()); for(int i = count - 1; i >= 0; --i) sb.append(Character.toChars(s.codePointAt(i))); return sb.toString(); }
Solution similaire utilisant java.text.culaire code>: Stackoverflow.com/a/20279110/9636
Merci Heath Borders. Je ne suis pas vraiment allé dans un personnage précompenté (je ne pense pas que la plupart des gens savent ce qu'ils sont). Dans ce qui précède, il ne fait aucun doute de briser une inverser une chaîne qui les utilisait.
Vous allez ici:
p> p> p>
public class MyStack { private int maxSize; private char[] stackArray; private int top; public MyStack(int s) { maxSize = s; stackArray = new char[maxSize]; top = -1; } public void push(char j) { stackArray[++top] = j; } public char pop() { return stackArray[top--]; } public char peek() { return stackArray[top]; } public boolean isEmpty() { return (top == -1); } public boolean isFull() { return (top == maxSize - 1); } public static void main(String[] args) { MyStack theStack = new MyStack(10); String s="abcd"; for(int i=0;i<s.length();i++) theStack.push(s.charAt(i)); for(int i=0;i<s.length();i++) System.out.println(theStack.pop()); }
code sera comme ci-dessous:
public class RemoveString { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); String s=scanner.next(); String st=""; for(int i=s.length()-1;i>=0;i--){ st=st+s.charAt(i); } System.out.println(st); } }
Ceci est la meilleure solution pour ce } p> p>
Tant de méthodes étaient déjà fournies qui fait cette méthode. Je ne vois pas comment cela peut bénéficier quand il s'agit simplement d'un dérivé des autres postes.
public class ReverseString { public static void main(String[] args) { reverseString("HELLO"); } public static String reverseString(String s){ char []arr=s.toCharArray(); for(int i= (arr.length)-1;i>=0;i--){ System.out.print(arr[i]); } String str=String.copyValueOf(arr); return str; }
code sera comme ci-dessous:
public class A{ public static void main(String args[]){ String str="hello"; for(int i=str.length()-1;i>=0;i--){ String str1=str.charAt(i); system.out.print(str1); } } }
Vous voudrez peut-être décrire ce qui rend cette réponse correcte.
public class Match { void comp(String s1, String s2) { char[] charArray1 = s1.toCharArray(); char[] charArray2 = s2.toCharArray(); int length1 = charArray1.length; int length2 = charArray2.length; int flag = 0; if (length1 == length2) { for (int i = 0; i <= length1 - 1; i++) { if (charArray1[i] == charArray2[i]) { System.out.println("index are matched:" + " " + charArray1[i] + " " + "in index-" + i); } else { flag = 1; System.out.println("index are not matched:" + " " + charArray1[i] + " " + "in index-" + i); System.out.println("index are not matched:" + " " + charArray2[i] + " " + "in index-" + i); } } } else { System.out.println("Your string are not matched by length"); } if (flag == 0) { System.out.println("Your string matched with other String"); } else { System.out.println("Your string are not matched"); } } public static void main(String[] args) { java.util.Scanner sc = new java.util.Scanner(System.in); System.out.println("Enter the 1st String:"); String s1 = sc.nextLine(); System.out.println("Enter the 2nd string"); String s2 = sc.nextLine(); Match m = new Match(); m.comp(s1, s2); } }
Tandis que cette réponse est probablement correcte et utile, elle est préférée si vous Inclure une explication avec elle pour expliquer comment elle aide à résoudre le problème. Cela devient particulièrement utile à l'avenir, s'il y a une modification (éventuellement sans rapport), ce qui le fait arrêter de travailler et que les utilisateurs doivent comprendre comment il a fonctionné une fois.
package com.ofs; public class ReverseWordsInString{ public static void main(String[] args) { String str = "welcome to the new world and how are you feeling ?"; // Get the Java runtime Runtime runtime = Runtime.getRuntime(); // Run the garbage collector runtime.gc(); // Calculate the used memory long firstUsageMemory = runtime.totalMemory() - runtime.freeMemory(); System.out.println("Used memory in bytes: " + firstUsageMemory); System.out.println(str); str = new StringBuffer(str).reverse().toString(); int count = 0; int preValue = 0; int lastspaceIndexVal = str.lastIndexOf(" "); int strLen = str.length(); for (int i = 0; i < strLen - 1; i++) { if (Character.isWhitespace(str.charAt(i))) { if (i - preValue == 1 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 2 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.charAt(i - 2) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 3 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 4 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 5 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.substring(i - 2, i - 1) + str.charAt(i - 3) + str.charAt(i - 3) + str.charAt(i - 5) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 6 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.charAt(i - 5) + str.charAt(i - 6) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 7 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.charAt(i - 5) + str.charAt(i - 6) + str.charAt(i - 7) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 8 && count == 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.charAt(i - 5) + str.charAt(i - 6) + str.charAt(i - 7) + str.charAt(i - 8) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 2 && count != 0) { str = str.substring(0, preValue) + str.charAt(i - 1) + str.substring(i, strLen); preValue = i; } else if (i - preValue == 3 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(i - 1) + str.charAt(i - 2) + str.substring(i, strLen); preValue = i; } else if (i - preValue == 4 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.substring(i, strLen); preValue = i; } else if (i - preValue == 5 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 6 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.charAt(i - 5) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 7 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.charAt(i - 5) + str.charAt(i - 6) + str.substring(i, strLen); preValue = i; count++; } else if (i - preValue == 8 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(i - 1) + str.charAt(i - 2) + str.charAt(i - 3) + str.charAt(i - 4) + str.charAt(i - 5) + str.charAt(i - 6) + str.charAt(i - 7) + str.substring(i, strLen); preValue = i; count++; } if (lastspaceIndexVal == preValue) { if (strLen - lastspaceIndexVal == 2 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(strLen - 1); preValue = i; } else if (strLen - lastspaceIndexVal == 3 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(strLen - 1) + str.charAt(strLen - 2); preValue = i; } else if (strLen - lastspaceIndexVal == 4 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(strLen - 1) + str.charAt(strLen - 2) + str.charAt(strLen - 3); preValue = i; count++; } else if (strLen - lastspaceIndexVal == 5 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(strLen - 1) + str.charAt(strLen - 2) + str.charAt(strLen - 3) + str.charAt(strLen - 4); preValue = i; } else if (strLen - lastspaceIndexVal == 6 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(strLen - 1) + str.charAt(strLen - 2) + str.charAt(strLen - 3) + str.charAt(strLen - 4) + str.charAt(strLen - 5); preValue = i; count++; } else if (strLen - lastspaceIndexVal == 7 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(strLen - 1) + str.charAt(strLen - 2) + str.charAt(strLen - 3) + str.charAt(strLen - 4) + str.charAt(strLen - 5) + str.charAt(strLen - 6); preValue = i; } else if (strLen - lastspaceIndexVal == 8 && count != 0) { str = str.substring(0, preValue + 1) + str.charAt(strLen - 1) + str.charAt(strLen - 2) + str.charAt(strLen - 3) + str.charAt(strLen - 4) + str.charAt(strLen - 5) + str.charAt(strLen - 6) + str.charAt(strLen - 7); preValue = i; } } } } runtime.gc(); // Calculate the used memory long SecondaryUsageMemory = runtime.totalMemory() - runtime.freeMemory(); System.out.println("Used memory in bytes: " + SecondaryUsageMemory); System.out.println(str); } }
reversetring.java
import java.util.Scanner; public class StringReverse { public static void main(String[] args) { //Read user Data From Console Scanner sc = new Scanner(System.in); System.out.println("Enter Your String:"); //Take an String so that it can Store the string data String s1 = sc.nextLine(); //split the string and keep in an array String[] s2 = s1.split(" "); String s3 = " "; //reverse the string and placed in an String s3 for (int i = 0; i < s2.length; i++) { for (int j= s2[i].length()-1;j>=0;j--) { s3 += s2[i].charAt(j); }//for s3 += " "; }//for System.out.println("After Reverse: "+s3); }//main }//StringReverse
Il peut être fait de cette façon également
Vous pouvez simplement essayer comme ceci Prenez une chaîne ithérler sur elle à l'aide de la boucle jusqu'au deuxième dernier caractère de la chaîne, puis inversez simplement votre boucle comme suit:
public class StringReverse { public static void main(String ar[]){ System.out.println(reverseMe("iniana")); } static String reverseMe(String s){ String reverse = ""; for(int i = s.length()-1; i>=0; i--){ resverse = reverse + s.charAt(i); } return reverse; } }
Je pense aussi que "toute fonction prédéfinie" est très vague ... si vous n'utilisez pas les fonctions prédéfinies et b> et b>, vous allez avoir du mal à faire n'importe quoi i>.
Foururielle Java n'a que des méthodes, il n'a pas de fonctions. ;)
duplicaté possible de Quel est le meilleur moyen d'inverser récursivement une corde en Java?
Reportez-vous à Learnjava-soa.blogspot.in/2016 / 02 / ...