求用java写的高效算法

t427795737 2009-12-11 05:31:49
一篇合理范围的英文文章内容,要求反序每个单词的字母,而非整篇文章的单词,
条件:不能开辟新的存储空间
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
btq123 2009-12-15
  • 打赏
  • 举报
回复
可以把单词数组存在Stack里面,栈是先进后出,可以达到反序的效果.

现在在上班,有空了再把代码贴上去.
丈八涯 2009-12-15
  • 打赏
  • 举报
回复
条件:不能开辟新的存储空间

要满足这个条件估计递归和栈都被否了。

有另外一个问题:
条件:不能开辟新的存储空间,交换a,b的值:
int a = 1;
int b = 2;
a += b;
b = a - b;
a -= b;

Java2King 2009-12-12
  • 打赏
  • 举报
回复
类似选择排序的思路,头尾相换
perfecttt 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 litaoye 的回复:]
        private void button2_Click(object sender, EventArgs e)
        {
            char[] content = "this is a test".ToCharArray();
            int startIndex = 0;

            for (int i = 0; i < content.Length; i++)
            {
                if (content[i] == ' ')
                {
                    Reverse(content, startIndex, i - 1);
                    startIndex = i + 1;
                }
                else if (i == content.Length - 1)
                {
                    Reverse(content, startIndex, i);
                }
            }
        }

        private void Reverse(char[] content, int startIndex, int endIndex)
        {
            while (endIndex > startIndex)
            {
                char tmp = content[endIndex];
                content[endIndex] = content[startIndex];
                content[startIndex] = tmp;
                endIndex--;
                startIndex++;
            }
        }
[/Quote]
这个强啊!直接代码!
基本思路就是找到一个单词
把单词的头尾交换一下就可以!
不可以开辟新的空间,那我定义一个 char ch;或int a;算开辟新的存储空间吗?
绿色夹克衫 2009-12-11
  • 打赏
  • 举报
回复
private void button2_Click(object sender, EventArgs e)
{
char[] content = "this is a test".ToCharArray();
int startIndex = 0;

for (int i = 0; i < content.Length; i++)
{
if (content[i] == ' ')
{
Reverse(content, startIndex, i - 1);
startIndex = i + 1;
}
else if (i == content.Length - 1)
{
Reverse(content, startIndex, i);
}
}
}

private void Reverse(char[] content, int startIndex, int endIndex)
{
while (endIndex > startIndex)
{
char tmp = content[endIndex];
content[endIndex] = content[startIndex];
content[startIndex] = tmp;
endIndex--;
startIndex++;
}
}
绿色夹克衫 2009-12-11
  • 打赏
  • 举报
回复
读到空格之后,从空格之前开始首尾对换就可以了!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧