如何打印给定字符串的转置

时间:2013-07-01 05:47:04

标签: java string

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

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

我知道如何以相反的顺序打印它,但我没有得到如何使用转置。

帮助我。 提前谢谢。

                     abc
                     def 
                       g

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

                    ad
                    be
                    cfg

我如何使用java

执行此操作

3 个答案:

答案 0 :(得分:2)

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

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

                  c1   c2   c3
             r1   a     b    c
             r2   d     e    f 
             r3              g

答案 1 :(得分: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个交换以“固定”它。因此,交换次数为N-C,其中N是字符串长度,C是周期数。在我们的例子中,结果是2(交换1,2然后3,4)。

现在,这里有两个问题,我觉得我现在太累了,无法解决它们。)

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

2)我的公式#MinSwaps = N-C需要证明......我没有在网上找到它。

答案 2 :(得分:0)

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