6
votes

Impression inverse de n'importe quelle chaîne sans utiliser de fonction prédéfinie?

Comment imprimer l'inverse de la chaîne Java est une langue orientée objet sans utiliser de fonction prédéfinie comme inverse () ?


4 commentaires

Je pense aussi que "toute fonction prédéfinie" est très vague ... si vous n'utilisez pas les fonctions prédéfinies et et , vous allez avoir du mal à faire n'importe quoi .


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 / ...


34 Réponses :


3
votes

Tout d'abord: pourquoi réinventer la roue?

qui étant dit: boucle de la longueur de la chaîne à 0 et concaténate dans une autre chaîne.


0 commentaires

50
votes

Vous pouvez le faire de manière récursive ou itérative (boucle).

itératif: xxx

récursivement: xxx / p>


6 commentaires

-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: meta.stackexchange.com/questions/10811/... :" Ne pas descendre d'autres personnes qui répondent aux questions de devoirs de bonne foi, même si elles cassent ces lignes directrices. "


@ 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.



8
votes

Eh bien, l'impression elle-même suggérerait une fonction prédéfinie ...

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 est une fonction prédéfinie ... alors peut-être que le tableau de charcuterie elle-même. Mais encore une fois ... pourquoi ?

est la source autorisée à contenir "Egaugnal Detaniroro Tcejbo Si Avaj" ;-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.


0 commentaires

6
votes

Que diriez-vous d'une nouvelle traverse de la fin de la chaîne à la bec: xxx


0 commentaires

57
votes

Ceci est la solution la plus simple:

System.out.print("egaugnal detatneiro tcejbo si avaj");


2 commentaires

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 :)



1
votes

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));
    }
}


0 commentaires

1
votes
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;
}

1 commentaires

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 ()));



3
votes
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)); 
}

0 commentaires

0
votes

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: xxx

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.

sortira quelque chose comme: xxx

plus d'une question d'entretien que la question des devoirs, je dirais. < / p>


0 commentaires

0
votes
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);
}

2 commentaires

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.



7
votes
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);
}

0 commentaires

1
votes
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();
    }
}

0 commentaires

1
votes
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);
}

0 commentaires

0
votes
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]);
  }

}

0 commentaires

3
votes
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.

0 commentaires

0
votes
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;


    }
}

0 commentaires

0
votes
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);

0 commentaires

0
votes
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

0 commentaires

0
votes
 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);
}
}

0 commentaires

1
votes

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);
    }
    }
}


0 commentaires

1
votes

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();
 }


2 commentaires

Solution similaire utilisant java.text.culaire : 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.



0
votes

Vous allez ici: xxx xxx


0 commentaires

0
votes
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());

    }

0 commentaires

0
votes

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);

}

}


0 commentaires

1
votes

Ceci est la meilleure solution pour ce xxx

}


1 commentaires

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.



0
votes
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;
}

0 commentaires

0
votes

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);
      }

   }
}


1 commentaires

Vous voudrez peut-être décrire ce qui rend cette réponse correcte.



-1
votes
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);
}
}

1 commentaires

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.



0
votes
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);
}
}

0 commentaires

0
votes

reversetring.java xxx


0 commentaires

0
votes

c'est très simple en utilisant tandis que la boucle xxx


0 commentaires

0
votes
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

0 commentaires

0
votes

Il peut être fait de cette façon également xxx


0 commentaires

0
votes

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;
    }
}


0 commentaires