-4

我的问题是这样的。任何人都可以帮助我如何打印给定元素的转置。

任何人都可以帮助我如何打印给定元素的转置。我不知道如何为此申请循环。请帮助我这是我在跨国公司参加面试时面试官提出的问题。

我知道如何以相反的顺序打印它,但不知道如何使用转置来打印。

帮我解决这个问题。提前致谢。

                     abc
                     def 
                       g

我想像这样打印这个元素的转置

                    ad
                    be
                    cfg

我怎么能用java做到这一点

4

3 回答 3

2

我没有为您提供代码。这是我的提示

要使其转置,您需要交换行和列。将输入字符串作为一个 3x3 方阵,其中每个字母都是一个元素。现在将输入存储在二维数组中。在存储转置后,只需打印列值相对于行值。

                  c1   c2   c3
             r1   a     b    c
             r2   d     e    f 
             r3              g
于 2013-07-01T05:50:18.250 回答
0

好吧,无论数据的输入如何,您都应该将其存储在二维数组中,类型为 String。空白空间将被赋予一个空值(类似于 StinePike;s 模型,想象空间中的空值)。之后,创建方法转置非常简单——使用空值作为标记以列-行顺序循环以跳转到下一列。

于 2013-07-01T06:23:22.763 回答
0

假设距离只计算交换,这是一个基于排列的想法,它在线性时间内运行。

算法的第一步是确保两个字符串在字符内容上确实是等价的。这可以使用哈希表(或覆盖所有字母表的固定数组)在线性时间内完成。如果它们不是,那么 s2 不能被认为是 s1 的排列,并且“交换计数”是无关紧要的。

第二步计算将 s2 转换为 s1 所需的最小交换次数。这可以通过检查对应于从 s1 到 s2 的变换的排列 p 来完成。例如,如果 s1="abcde" 和 s2="badce",则 p=(2,1,4,3,5),表示位置 1 包含元素 #2,位置 2 包含元素 #1,依此类推。排列可以在线性时间内分解为排列循环。示例中的循环是 (2,1) (4,3) 和 (5)。最小交换计数是每个周期所需的交换总数。一个长度为 k 的循环需要 k-1 次交换才能“修复它”。因此,交换次数为 NC,其中 N 是字符串长度,C 是循环次数。在我们的示例中,结果为 2(交换 1,2,然后交换 3,4)。

现在,这里有两个问题,我想我现在解决它们太累了:)

1)我的解决方案假设没有字符重复,但情况并非总是如此。需要进行一些调整才能正确计算交换计数。

2) 我的公式#MinSwaps=NC 需要证明……我在网上没有找到。

于 2013-07-01T05:53:15.767 回答