我目前正在MIPS中的回文函数上工作,该函数接受一个char数组,如果不是回文,则返回0,否则返回1。除了在索引i上找到数据的那一部分外,其他所有东西似乎都在工作和array.length-i-1。如果有人可以引导我朝正确的方向前进,我将非常感激。
这是我要使用的Java代码:
<div class="wrapper">
<p>Text Content</p>
<p>
<img class="my" src="https://i.imgur.com/Spk75ST.jpg" />
</p>
</div>
这是回文功能:
int Palindrome(char[] s) {
for(int i = 0; i < (s.length / 2); i++) {
if(s[i] != s[s.length - 1 - i])
return 0;
}
return 1;
}
主要内容:
palindrome:
# Get length of array and store it in $t1
addi $sp, $sp, -8
sw $ra, 0($sp)
sw $a0, 4($sp)
li $t1, 0
lengthWhile:
lw $t2, 0($a0)
beq $t2, $zero, startPalindrome
addi $t1, $t1, 1
addi $a0, $a0, 4
j lengthWhile
startPalindrome:
div $t2, $t1, 2 # Stores a.length / 2 into $t2
add $t3, $t3, $zero # i value (0 - (a.length/2 - 1))
add $t4, $t4, $t1
subi $t4, $t4, 1 # a.length-1
# $t1 = a.length
# $t2 = a.length / 2
# $t3 = i
# $t4 = a.length - 1
palLoop:
bge $t3, $t2, exitLoop
sub $t4, $t4, $t3 # Puts a.length-1-i into $t4
sll $t5, $t3, 2
add $t6, $a0, $t5
lw $s1, 0($t6)
sll $s3, $t4, 2
add $t7, $a0, $s3
lw $s2, 0($t7)
bne $s1, $s2, return0
# Increase i and start loop again
addi $t3, $t3, 1
j palLoop
return0:
li $v0, 0
jr $ra
exitLoop:
li $v0, 1
jr $ra
在此先感谢您的帮助。 (要指定,palLoop是我遇到问题的地方。)
答案 0 :(得分:0)
不是您问题的直接组成部分,而是charArray:.word'a','b','c','d','c','w','a'实际上是包含chatarter的单词数组值,而不是字符数组。
当您在各处使用单词数组时,这似乎可以正常工作,但是如果使用正确的字符数组,则不会正常工作。
加上$ t3,$ t3,$ zero是t3 = t3 + 0-之前的t3是什么?
添加$ t4,$ t4,$ t1-相同的评论
sub $ t4,$ t4,$ t3#将a.length-1-i放入$ t4-将覆盖a.length-1(t4),因此在第二遍循环中不会正确。 / p>