Here is the question: Given two strings s and goal, return true if and only if s can become goal after some number of shifts on s.
A shift on s consists of moving the leftmost character of s to the rightmost position.
For example, if s = "abcde", then it will be "bcdea" after one shift.
- Input: s= "abcde",goal= "cdeab" Output:true
- Input: s= "abcde",goal= "abced" Output:false
Here is the code I wrote:
public static void main(String[] args) {
    System.out.println(rotateString("abcd","cdab"));
    }
public static boolean rotateString(String s, String goal) {
        Boolean flag = false;
        StringBuilder builder = new StringBuilder(s);
            for (int i=0;i<=s.length()-1;i++){
            if (builder.toString() == goal) {
                flag= true;
                break;
            }
            char temp = builder.charAt(builder.length()-1);
            for (int j=s.length()-1;j>=0;j--){
                if (j==0) continue;
                builder.setCharAt(j, builder.charAt(j-1));
            }
            builder.setCharAt(0,temp);
            }
        return flag;
    }
I don't know how the flag is still false I also tried debugging it, it shows value of builder.toString() and goal is same.
I was expecting the flag to be true but it always stays false.
 
     
     
    