`

实例049 - 用数组反转字符串。

 
阅读更多

心法领悟049:多掌握程序算法。

现在的高级语言中已经为开发者预定义了很多算法的实现,但这并不代表着开发人员就不需要掌握算法,包括语言中实现的和未实现的。封装好的代码并不一定就适合现有的程序,也无法提供特殊的处理过程。所以开发者必须掌握常用的算法,并根据具体应用决定使用哪个算法使程序实现最高运行效率。

注:StringBuilder类的reverse()方法可以实现字符串的反转。

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;

public class ArrayReverseString extends JFrame {
    
    private JPanel contentPane;
    private JTextField inputField;
    private JTextField outputField;
    private JTextArea infoArea;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        try {
            UIManager
                    .setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch (Throwable e) {
            e.printStackTrace();
        }
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ArrayReverseString frame = new ArrayReverseString();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    /**
     * Create the frame.
     */
    public ArrayReverseString() {
        setTitle("\u7528\u6570\u7EC4\u628A\u5B57\u7B26\u4E32\u53CD\u8F6C");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 270);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 5));
        
        JPanel panel = new JPanel();
        contentPane.add(panel, BorderLayout.NORTH);
        GridBagLayout gbl_panel = new GridBagLayout();
        gbl_panel.columnWidths = new int[] { 90, 325, 0 };
        gbl_panel.rowHeights = new int[] { 30, 30, 0 };
        gbl_panel.columnWeights = new double[] { 0.0, 1.0, Double.MIN_VALUE };
        gbl_panel.rowWeights = new double[] { 0.0, 0.0, Double.MIN_VALUE };
        panel.setLayout(gbl_panel);
        
        JLabel label = new JLabel(
                "\u8F93\u5165\u4E00\u4E2A\u5B57\u7B26\u4E32\uFF1A");
        GridBagConstraints gbc_label = new GridBagConstraints();
        gbc_label.ipadx = 1;
        gbc_label.anchor = GridBagConstraints.WEST;
        gbc_label.insets = new Insets(0, 0, 5, 0);
        gbc_label.gridx = 0;
        gbc_label.gridy = 0;
        panel.add(label, gbc_label);
        
        inputField = new JTextField();
        GridBagConstraints gbc_inputField = new GridBagConstraints();
        gbc_inputField.anchor = GridBagConstraints.NORTH;
        gbc_inputField.fill = GridBagConstraints.HORIZONTAL;
        gbc_inputField.insets = new Insets(0, 0, 5, 0);
        gbc_inputField.gridx = 1;
        gbc_inputField.gridy = 0;
        panel.add(inputField, gbc_inputField);
        inputField.setColumns(10);
        
        JButton button = new JButton("\u53CD\u8F6C");
        GridBagConstraints gbc_button = new GridBagConstraints();
        gbc_button.anchor = GridBagConstraints.NORTH;
        gbc_button.insets = new Insets(0, 0, 0, 5);
        gbc_button.gridx = 0;
        gbc_button.gridy = 1;
        panel.add(button, gbc_button);
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_button_actionPerformed(e);
            }
        });
        
        outputField = new JTextField();
        GridBagConstraints gbc_outputField = new GridBagConstraints();
        gbc_outputField.anchor = GridBagConstraints.NORTH;
        gbc_outputField.fill = GridBagConstraints.HORIZONTAL;
        gbc_outputField.gridx = 1;
        gbc_outputField.gridy = 1;
        panel.add(outputField, gbc_outputField);
        outputField.setColumns(10);
        
        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);
        
        infoArea = new JTextArea();
        scrollPane.setViewportView(infoArea);
    }
    
    protected void do_button_actionPerformed(ActionEvent e) {
        String inputStr = inputField.getText();// 获取用户输入字符串
        char[] strArray = inputStr.toCharArray();// 提取字符数组
        infoArea.setText("");// 清空文本域控件文本
        for (int i = 0; i < strArray.length / 2; i++) {// 数组反转算法
            char temp = strArray[i];// 交换数组元素
            strArray[i] = strArray[strArray.length - i - 1];
            strArray[strArray.length - i - 1] = temp;
            infoArea.append("第" + (i + 1) + "次循环:\t");// 显示循环反转过程
            for (char c : strArray) {// 显示每次反转数组的结果
                infoArea.append(c + "");
            }
            infoArea.append("\n");// 文本域换行
        }
        String outputStr = new String(strArray);// 把字符数组转换为字符串
        outputField.setText(outputStr);// 显示反转后的字符串
    }
}

 

 

  • 大小: 14.1 KB
分享到:
评论

相关推荐

    PHP经典实例--数组

    4. 数组反转:使用array_reverse()函数可以反转数组的顺序: ```php $reversedArray = array_reverse($array); ``` 5. 数组排序:PHP提供了多种排序函数,如: - asort():按值升序排序关联数组并保持键的关联。 ...

    java 数组和字符串

    ` 反转字符串顺序。 #### 相等性判断的两种方式 - **`==`运算符**:用于比较两个对象的引用是否相同,即它们是否指向内存中的同一位置。 - **`equals()`方法**:用于比较两个对象的值是否相等,对于基本类型和`...

    the-string-reverse-by-C-Language.rar_反转字符串_指针和字符串

    反转字符串是一种常见的编程任务,可以通过多种方法实现,其中包括使用指针。在这个项目中,我们将探讨如何通过C语言来反转字符串,重点是理解指针在过程中的作用。 首先,我们要明白指针在C语言中的概念。指针是一...

    Java 实例 - 字符串反转源代码-详细教程.zip

    因此,反转字符串通常涉及到创建一个新的字符串对象。以下是使用Java内置方法实现字符串反转的基本方法: 1. **StringBuilder或StringBuffer类**: 这两个类提供了`reverse()`方法,可以方便地反转字符串。`...

    Java字符、字符串、数组操作实例.rar

    Java字符、字符串、数组操作实例,主要是数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等方面的例子,相信对初学者学习Java有帮助的。

    《Visual Basic.NET精彩编程百例》源代码:37_反转字符串

    这个"37_反转字符串"的源代码实例是一个典型的字符串处理问题,下面我们将深入探讨相关的知识点。 首先,让我们了解字符串反转的基本概念。在计算机科学中,反转字符串是指将字符串中的字符顺序颠倒。例如,输入...

    js数组常见操作及数组与字符串相互转化实例详解

    可以使用`join()`方法将数组元素合并为一个字符串,如`obj.join("")`,这将去除数组元素间的分隔符并返回一个字符串。 ### 2. JavaScript数组的常见操作 - **创建数组**: 有多种方式创建数组,如`new Array()`...

    一个JavaScript递归实现反转数组字符串的实例

    每天一个JavaScript实例-递归实现反转数组字符串&lt;/title&gt; [removed] var func = function(x,indx,str){ return indx == 0 ? str : func(x,--indx,(str += + x[indx]));; } var arr = new Array(apple

    Java 实例 - 压栈出栈的方法实现字符串反转源代码-详细教程.zip

    本教程的详细资源包含在名为“Java实例 - 压栈出栈的方法实现字符串反转源代码-详细教程.rar”的压缩包中,涵盖了完整的Java源代码示例和详细的解释,非常适合初学者和有经验的开发者参考学习。通过学习这个实例,你...

    使用几种常见的方法实现字符串反转

    3. **读取并反转字符串**: - 使用`Scanner`的`nextLine()`方法读取用户输入的字符串。 - 通过遍历字符串中的每个字符(从最后一个字符到第一个字符),并依次输出,实现字符串反转。 4. **完整示例代码**: ```...

    字符串反转 C# .NET

    因此,当我们说“反转字符串”时,实际上是创建一个新的字符串,其字符顺序与原字符串相反。 1. **使用内置方法:** C# .NET框架提供了一些内置方法来帮助我们反转字符串。最常用的是`string.Reverse()`,但这不是...

    程序员编程艺术:面试和算法心得

    - 反转思想:将字符串分为两部分 X 和 Y,先反转 X 再反转 Y,最后整体反转一次即可。 - 例如 "abcdef" 要求 "cdefab",步骤如下: 1. 反转 "abc" 得到 "cba"; 2. 反转 "def" 得到 "fed"; 3. 整体反转 ...

    一维数组实例代码

    本实例将通过几个具体的编程任务来深入理解一维数组的使用,包括计算平均分、统计空格数量、实现字符串逆序、数组排序以及删除指定字符等。 首先,我们来看第一个任务:计算青年歌手大赛中选手的平均得分。在去除一...

    字符串逆序-使用Java实现的字符串按单词逆序.zip

    在这个例子中,我们首先通过`split(" ")`将字符串"Hello World"分割成两个单词"Hello"和"World",然后使用`Arrays.reverse(words)`将这两个单词的位置互换,最后通过`String.join(" ", words)`将它们用空格连接起来...

    Java字符串及数组操作的实例

    内容索引:Java源码,初学实例,数组 Java字符、字符串、数组操作的一些实例源码,主要有数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等……...

    数据结构与算法题解

    - 反转字符串中的单词。 - **ValidPalindrome** - 判断一个字符串是否为回文串。 - **LongestPalindromicSubstring** - 寻找字符串中的最长回文子串。 - **SpaceReplacement** - 替换字符串中的空格。 - **...

    c语言实例-----经典

    D) 虽然可以将字符串初始化给字符数组,但数组大小未指定,因此编译器不能确定。 4. 结构体的引用方式在C语言中是通过指针或解引用操作完成的。定义了结构体`struct st`后,`(*pst).b`是正确引用结构体成员的方式,...

Global site tag (gtag.js) - Google Analytics