0

Reverse a string question java

https://code.sololearn.com/c5s77FZsJIZX/?ref=app This is how i solved the coding project to reverse a string in java. Im just wondering why it outputs characters on different lines. Also why when i write "arr.length -1", why does that reverse it instead of just taking one char away from the length. Shouldnt it be arr.length * -1? I overthink my own code too much.

12th Apr 2022, 5:11 PM
webbxhead
webbxhead - avatar
18 Answers
+ 3
array.length-1 index is same as index [-1] in python, not [::-1] Ex: "ABCD" is word | | | | 0,1,2,3 indexes, length is number of characters which is 4 word[ array.length-1] is 'D' So maximum valid index is array.length-1 only.. (Note: index starts from 0 ) In python, it's same as word[-1] , negetive index allowed in python.. word[::-1] reverse total string edit: Kristopher updated read again Hope it helps...
12th Apr 2022, 6:39 PM
Jayakrishna 🇮🇳
+ 1
word[::-1] Is actually word[(len(word)-1)::-1] It is just an index, no matter if it's Python or Java.
12th Apr 2022, 5:43 PM
Lisa
Lisa - avatar
0
Use System.out.print() to print in the same line. For the second question, I dont understand what you mean
12th Apr 2022, 5:13 PM
Abhishek Tandon
Abhishek Tandon - avatar
0
Infinity i mean inside the for-loop, when i wrote "arr.length-1" why does that reverse the length of the string instead of taking 1 character off the end
12th Apr 2022, 5:15 PM
webbxhead
webbxhead - avatar
0
Because println does exactly what the name says: it prints a *line*. Use print if you do not want line breaks. length does exactly what the names says: It returns the length of the string. If you want to iterate the characters of the string, you need to consider that indexing starts with 0.
12th Apr 2022, 5:15 PM
Lisa
Lisa - avatar
0
Lisa but if String str ="hello" has a length of 5, then why would str.length -1 not just make it "hell"?
12th Apr 2022, 5:17 PM
webbxhead
webbxhead - avatar
0
arr.length returns a number - an integer which tells you how many numbers are there in the array. It doesn't reverse anything. The loop does. The looping variable 'i' is intialised to arr.length - 1 and goes down to 0 which is the starting index of the array, basically accessing the array elements in the reverse direction and printing at the same time. It doesn't change anything in the orignal distribution of the elements in the array.
12th Apr 2022, 5:19 PM
Abhishek Tandon
Abhishek Tandon - avatar
0
"hello" has length 5, right? What is the index of "o"? – it's 4
12th Apr 2022, 5:20 PM
Lisa
Lisa - avatar
0
Lisa so doing arr.length -1 is the same as doing [::-1] in python?
12th Apr 2022, 5:23 PM
webbxhead
webbxhead - avatar
0
No, they are not the same. arr.length - 1 returns a number. arr[::-1] in Python returns a string
12th Apr 2022, 5:27 PM
Abhishek Tandon
Abhishek Tandon - avatar
0
Lisa when u index usually u would use [ ] to indicate that but here you just put -1
12th Apr 2022, 5:28 PM
webbxhead
webbxhead - avatar
0
length - 1 just says that you start from the last letter. I wouldn't directly compare it to Python slicing but the outcome is the same, so if it help, you can think of it like that :)
12th Apr 2022, 5:29 PM
Lisa
Lisa - avatar
0
Infinity 😭 i must be stupid or something cause i dont understand lmfao. So the .length returns an integer for the amount of characters in a string. So for ex: int x = [1,3,2] has length of 3. So why does x.length - 1 return [2, 3, 1] instead of [1, 3,].?
12th Apr 2022, 5:31 PM
webbxhead
webbxhead - avatar
0
Lisa ok thank you i guess thats just something that works in java. Im new to coding and i dont think sololearn really ever told me i could do something like that. Very confusing
12th Apr 2022, 5:32 PM
webbxhead
webbxhead - avatar
0
Lisa so if you did word[array.length -2] its gonna start from 1 (B) and then initiate the for loop?
12th Apr 2022, 6:46 PM
webbxhead
webbxhead - avatar
0
Jayakrishna🇮🇳 yeah i understand how indexing the array works, i just didnt understand why you can just say arr.length - 1 instead of something like arr.length[-1]
12th Apr 2022, 6:59 PM
webbxhead
webbxhead - avatar
0
arr.length is exactly one integer. arr.length is not the same as arr[3] or arr[arr.length-1] arr[arr.length - 2] would ve the 2nd last char. You can start the loop with any number you want, you can count upwards/ left-to-right or downwards/ right-to-left as long as it is an index that exists
12th Apr 2022, 7:14 PM
Lisa
Lisa - avatar
0
Kristopher There arr is an array length is property of array, which returns length means number of elements in array. So arr.length returns a integer, and now this is not an array to index, Java does not allow negetive indexing.. arr[1] is valid, arr[-1] is invalid, arr.length[-1] => is indexing a number, invalid.. In python, it's like arr[ len(arr)-1 ] , it returns last character, and also you can use as arr[-1] in python. is it valid to use len(arr)[-1] in python? No. arr.length-1 returns last , maximum valid index. It's an integer.. Hope it clears..!!!
12th Apr 2022, 7:14 PM
Jayakrishna 🇮🇳