Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中反转单词,而不使用任何特定于语言的函数_Java_String_Reverse - Fatal编程技术网

在Java中反转单词,而不使用任何特定于语言的函数

在Java中反转单词,而不使用任何特定于语言的函数,java,string,reverse,Java,String,Reverse,我一直在看我的公司提出的Java面试问题,遇到了一个我似乎找不到解决方案的问题 问题是: 请编写一个方法(函数)作为单个参数a接受 字符串,并反转此字符串中单词的顺序 ”是单词分隔符,任何其他字符都被视为单词的一部分。为了简化,请考虑单词之间总是有一个空间。 重要-不允许使用其他字符串、数组或包含多个元素的其他数据结构,只允许使用纯原子变量,如整数、字符等 此外,除了提供字符串长度的函数外,不允许使用任何其他特定于语言的字符串函数 预期结果: "hello my beautiful world"

我一直在看我的公司提出的Java面试问题,遇到了一个我似乎找不到解决方案的问题

问题是:

请编写一个方法(函数)作为单个参数a接受 字符串,并反转此字符串中单词的顺序

是单词分隔符,任何其他
字符都被视为单词的一部分。为了简化,请考虑单词之间总是有一个空间。

重要-不允许使用其他字符串、数组或包含多个元素的其他数据结构,只允许使用纯原子变量,如整数、字符等

此外,除了提供字符串长度的函数外,不允许使用任何其他特定于语言的字符串函数

预期结果:

"hello my beautiful world" -> "world beautiful my hello"

所以,我不能使用:
chars[]
str.split()
str.charAt()
str.substring()
StringBuilder
,字符串的另一个声明


我应该使用递归吗?

因为,
String
是不可变的,并且使用封装

你的问题没有解决办法。您不能直接更新值,没有可用的setter,并且没有对getter的访问权限(因为您只能使用
.length
),因此无法读取值


因此,我建议回应一下,不变性和封装阻止了您这样做。

在现实生活中,作为一名软件工程师,您有时会被要求做一些技术上不可能甚至是荒谬的事情。有时候,提出问题的人可能是像你的老板或大客户这样的重要人物

如果有人真的问你这个面试问题,那么你就处于这种情况。这使得这个问题非常有趣,你可能想弄清楚最好的答案是什么

如果有人问我,我会这样回答。作为一名面试官,我会给这种回答最多的分数:

1) 解释在技术上如何不可能满足要求,但在不让我感到愚蠢的情况下这样做。这是外交手段

2) 弄清楚我到底想要什么。在这种情况下,面试官可能想看看您是否知道如何使用低级操作反转字符串中的单词。例如,这是一个完全合理的C语言问题。弄清楚面试官真正想要的是什么显示了经验和判断力


3) 提供一个能给我想要的答案。用Java编写此方法,但使用StringBuilder而不是字符串,并仅调用length()、charAt()和setCharAt()。这显示了面试官希望看到的专业知识。

是的,你应该重复。旁注:这似乎是我要问的问题之一:“你确信‘知道’如何做……会成为一名优秀的程序员吗?”此外,如果你的公司对此感到困惑;你们公司应该有人能解决这个问题,对吗?(我同意其他人的观点;考虑到这些要求,我看不到解决这个问题的方法)。或者你是说有人提出了这个问题;但是没有人知道答案?这是一系列愚蠢的面试问题中的另一个问题。“向我们展示你所知道的,但你不能使用你所知道的。”日常工作中何时会出现此类问题?创建一个反转字符串的web应用程序,然后将字符串参数发送到其URL,并打印响应结果。Runtime.exec可能是另一种过度使用的方法@TobiasBrösamle你有一个观点(如果你不能访问它的数据,
字符串有什么好处?)。但OP明确表示,
charAt(int)
是不允许的,