心法领悟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);// 显示反转后的字符串 } }
相关推荐
4. 数组反转:使用array_reverse()函数可以反转数组的顺序: ```php $reversedArray = array_reverse($array); ``` 5. 数组排序:PHP提供了多种排序函数,如: - asort():按值升序排序关联数组并保持键的关联。 ...
` 反转字符串顺序。 #### 相等性判断的两种方式 - **`==`运算符**:用于比较两个对象的引用是否相同,即它们是否指向内存中的同一位置。 - **`equals()`方法**:用于比较两个对象的值是否相等,对于基本类型和`...
反转字符串是一种常见的编程任务,可以通过多种方法实现,其中包括使用指针。在这个项目中,我们将探讨如何通过C语言来反转字符串,重点是理解指针在过程中的作用。 首先,我们要明白指针在C语言中的概念。指针是一...
因此,反转字符串通常涉及到创建一个新的字符串对象。以下是使用Java内置方法实现字符串反转的基本方法: 1. **StringBuilder或StringBuffer类**: 这两个类提供了`reverse()`方法,可以方便地反转字符串。`...
Java字符、字符串、数组操作实例,主要是数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等方面的例子,相信对初学者学习Java有帮助的。
这个"37_反转字符串"的源代码实例是一个典型的字符串处理问题,下面我们将深入探讨相关的知识点。 首先,让我们了解字符串反转的基本概念。在计算机科学中,反转字符串是指将字符串中的字符顺序颠倒。例如,输入...
可以使用`join()`方法将数组元素合并为一个字符串,如`obj.join("")`,这将去除数组元素间的分隔符并返回一个字符串。 ### 2. JavaScript数组的常见操作 - **创建数组**: 有多种方式创建数组,如`new Array()`...
每天一个JavaScript实例-递归实现反转数组字符串</title> [removed] var func = function(x,indx,str){ return indx == 0 ? str : func(x,--indx,(str += + x[indx]));; } var arr = new Array(apple
本教程的详细资源包含在名为“Java实例 - 压栈出栈的方法实现字符串反转源代码-详细教程.rar”的压缩包中,涵盖了完整的Java源代码示例和详细的解释,非常适合初学者和有经验的开发者参考学习。通过学习这个实例,你...
3. **读取并反转字符串**: - 使用`Scanner`的`nextLine()`方法读取用户输入的字符串。 - 通过遍历字符串中的每个字符(从最后一个字符到第一个字符),并依次输出,实现字符串反转。 4. **完整示例代码**: ```...
因此,当我们说“反转字符串”时,实际上是创建一个新的字符串,其字符顺序与原字符串相反。 1. **使用内置方法:** C# .NET框架提供了一些内置方法来帮助我们反转字符串。最常用的是`string.Reverse()`,但这不是...
- 反转思想:将字符串分为两部分 X 和 Y,先反转 X 再反转 Y,最后整体反转一次即可。 - 例如 "abcdef" 要求 "cdefab",步骤如下: 1. 反转 "abc" 得到 "cba"; 2. 反转 "def" 得到 "fed"; 3. 整体反转 ...
本实例将通过几个具体的编程任务来深入理解一维数组的使用,包括计算平均分、统计空格数量、实现字符串逆序、数组排序以及删除指定字符等。 首先,我们来看第一个任务:计算青年歌手大赛中选手的平均得分。在去除一...
在这个例子中,我们首先通过`split(" ")`将字符串"Hello World"分割成两个单词"Hello"和"World",然后使用`Arrays.reverse(words)`将这两个单词的位置互换,最后通过`String.join(" ", words)`将它们用空格连接起来...
内容索引:Java源码,初学实例,数组 Java字符、字符串、数组操作的一些实例源码,主要有数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等……...
- 反转字符串中的单词。 - **ValidPalindrome** - 判断一个字符串是否为回文串。 - **LongestPalindromicSubstring** - 寻找字符串中的最长回文子串。 - **SpaceReplacement** - 替换字符串中的空格。 - **...
D) 虽然可以将字符串初始化给字符数组,但数组大小未指定,因此编译器不能确定。 4. 结构体的引用方式在C语言中是通过指针或解引用操作完成的。定义了结构体`struct st`后,`(*pst).b`是正确引用结构体成员的方式,...